A Rust az úgynevezett trait-ek segítségével oldja meg a polimorfizmust. Minden trait meghatároz metódusokat, amikkel a struct-okat fel lehet ruházni.
Először is meghatározzuk, hogy is néz ki a trait és az általa nyújtott metódusok paraméterei:
trait MyTrait {
fn foo(&self);
...
}
A trait-ekre gondolhatunk úgy, mint egy "szerződés," ami kimondja, hogy a trait-et megvalósító
struct-okra innentől a trait-en át is hivatkozhatunk (&dyn MyTrait
), anélkül is, hogy tudnánk
a struct pontos típusát.
A struct-ok trait által előírt metódusait szintén egy implementációs blokkon belül írhatjuk meg:
impl MyTrait for MyStruct {
fn foo(&self) {
...
}
...
}