Задачи на ООП в Rust. Часть 5
В Rust нет наследования. Используйте композицию: struct Employee { user: User, salary: u32 }.
Дан struct User:
struct User { name: String, age: u32 }
Сделайте Employee с полем user: User и salary: u32.
Делегируйте метод name(&self) из Employee к self.user.
Дан код:
struct User { age: u32 }
impl User {
fn set_age(&mut self, age: u32) {
if age <= 120 { self.age = age; }
}
}
Сделайте Employee, который вызывает self.user.set_age(age).
Дан User с name/surname:
struct User { name: String, surname: String }
Сделайте Employee::full_name(&self) -> String через поля user.
Сравните композицию и наследование — преимущества в Rust.
Сделайте метод promote(&mut self, bonus: u32) для Employee.
Сделайте функцию, принимающую &User и работающую и с User, и с Employee через общий trait (preview).
Вложите struct Address внутрь User.
Создайте struct Company с Vec<Employee> и методами добавления сотрудника и подсчёта зарплатного фонда.