Rust suportă polimorfismul prin trăsături (în engleză traits). Trăsăturile ne permit asocierea unui set de metode cu o structura.
Prima dată definim semnăturile metodelor unei trăsături în:
trait TrasaturaMea {
fn foo(&self);
...
}
Când o structură implementează o trăsătură, este stabilit un contract ce permite interacțiunea noastră indirectă cu structura, prin tipul trăsăturii (exemplu: &dyn TrasaturaMea
), fără a fi nevoie să cunoaștem tipul real al structurii.
Metodele trăsăturii implementate de structură sunt definite în cadrul unui bloc de implementare:
impl TrasaturaMea for StructuraMea {
fn foo(&self) {
...
}
...
}