Задачи на ООП в Rust. Часть 6
Объявите trait Describable { fn describe(&self) -> String; }.
Дан trait:
trait Greeter { fn greet(&self) -> String; }
Реализуйте для struct User и Employee.
Сделайте trait с методом по умолчанию и переопределите его в одном struct.
Сделайте функцию fn print_desc(item: &impl Describable).
Дан trait Area:
trait Area { fn area(&self) -> f64; }
Реализуйте для Circle и Rectangle.
Используйте trait bound: fn largest<T: PartialOrd>(a: T, b: T) -> T.
Сделайте trait Printable и blanket-style impl для нескольких struct.
Объясните orphan rule на примере.
Сделайте trait для сравнения объектов: fn equals(&self, other: &Self) -> bool.
Опишите trait Repository с методом find(&self, id: u64) -> Option<Self::Item> и реализуйте его для in-memory хранилища.