Задачи на ООП в Rust. Часть 7
Объясните trait object &dyn Drawable vs impl Drawable.
Дан trait:
trait Drawable { fn draw(&self); }
Создайте Vec<Box<dyn Drawable>> с Circle и Square.
Вызовите draw() для каждого элемента вектора trait objects.
Дан trait:
trait Animal { fn speak(&self) -> &str; }
Сделайте fn animal_concert(animals: &[&dyn Animal]).
Объясните, когда нужен Box<dyn Trait>.
Сравните статический dispatch (impl Trait) и динамический (dyn Trait).
Сделайте функцию, принимающую &dyn Describable и возвращающую строку.
Сделайте enum с вариантами, содержащими Box<dyn Drawable> (concept).
Trait object и lifetimes — кратко объясните ограничение.
Опишите trait ClickHandler и храните разные кнопки как Vec<Box<dyn ClickHandler>>. Вызовите on_click у всех.