Rust ondersteunt polymorfisme met traits. Traits stellen ons in staat om een set methoden te koppelen aan een struct-type.
Eerst definiëren we de signaturen van de methoden van een trait:
trait MyTrait {
fn foo(&self);
...
}
Wanneer een struct een trait implementeert, ontstaat er een contract dat ons in staat stelt om indirect met de struct te interageren via het trait-type (bijv. &dyn MyTrait), zonder het daadwerkelijke type te hoeven kennen.
De trait-methoden die door een struct worden geïmplementeerd, worden gedefinieerd binnen een implementatieblok:
impl MyTrait for MyStruct {
fn foo(&self) {
...
}
...
}