Rust поддерживает полиморфизм с помощью типажей. Типажи позволяют связывать набор методов со структурным типом (struct, enum).
Сначала мы определяем сигнатуры методов типажа в коде как:
trait MyTrait {
fn foo(&self);
...
}
Когда структура реализует типаж, она устанавливает контракт поведения, который позволяет нам косвенно взаимодействовать со структурой через тип данного типажа (например, &dyn MyTrait
) без необходимости знать реальный тип.
Методы типажа, реализованные структурой определяются в блоке реализации:
impl MyTrait for MyStruct {
fn foo(&self) {
...
}
...
}