Rust tukee polymorfismia traittien avulla. Traitit antavat meidän liittää joukon metodeja structin tyyppiin.
Ensin määritämme traitin metodien allekirjoitukset:
trait MyTrait {
fn foo(&self);
...
}
Kun struct toteuttaa traitin, se luo sopimuksen, jonka avulla voimme olla epäsuorasti vuorovaikutuksessa structin kanssa trait- tyypin (esim. &dyn MyTrait) kautta ilman, että meidän tarvitsee tietää todellista tyyppiä.
Structin toteuttamat traitin metodit määritellään toteutuslohkon sisällä:
impl MyTrait for MyStruct {
fn foo(&self) {
...
}
...
}