Rust підтримує поліморфізм за допомогою ознак (Traits). Властивості дозволяють нам пов'язати набір методів зі структурним типом.
Спочатку ми визначаємо сигнатури методів, що входять до складу ознаки (Trait):
trait MyTrait {
fn foo(&self);
...
}
Коли структура реалізує трейт, вона встановлює контракт, який дозволяє нам опосередковано взаємодіяти зі структурою
через тип риси (наприклад, &dyn MyTrait
) без необхідності знати реальний тип.
Реалізовані методи трейтів структури визначаються в межах реалізації блоку реалізації:
impl MyTrait for MyStruct {
fn foo(&self) {
...
}
...
}