Rust rend possible le polymorphisme grâce aux 'traits'. Les traits nous permettent d'associer un ensemble de méthodes à une structure.
Il faut tout d'abord définir la signature des méthodes d'un trait:
trait MyTrait {
fn foo(&self);
...
}
Quand une structure implémente un trait, le trait établit un contrat entre
la structure et les méthodes que la structure doit implémenter. Cela nous
permetra d'interagir avec la structure à travers le type du trait
(par exemple &dyn MyTrait
) sans avoir à connaître le type réel.
Les méthodes du trait implémentées par la structure sont définies dans un bloc d'implémentation:
impl MyTrait for MyStruct {
fn foo(&self){
...
}
...
}