Rust unterstützt Polymorphismus mit Traits. Traits erlauben es uns, eine Reihe von Methoden mit einem Struct-Typ zu verknüpfen.
Zuerst definieren wir die Signaturen der Methoden eines Traits:
trait MyTrait {
fn foo(&self);
...
}
Wenn ein Struct einen Trait implementiert, etabliert das einen Vertrag, der es uns erlaubt, indirekt über den Trait-Typ (z. B. &dyn MyTrait) mit dem Struct zu interagieren, ohne den tatsächlichen Typ kennen zu müssen.
Die von einem Struct implementierten Trait-Methoden werden innerhalb eines Implementierungsblocks definiert:
impl MyTrait for MyStruct {
fn foo(&self) {
...
}
...
}