Rust mbështet polimorfizmin me traite. Traitet na lejojnë të lidhim një grup metodash me një lloj struct-i.
Së pari përcaktojmë nënshkrimet e metodave të një traiti:
trait MyTrait {
fn foo(&self);
...
}
Kur një struct implementon një trait, kjo krijon një kontratë që na lejon të ndërveprojmë në mënyrë indirekte me struct-in nëpërmjet llojit trait (p.sh. &dyn MyTrait), pa pasur nevojë të dimë llojin e vërtetë.
Metodat trait të implementuara nga një struct përcaktohen brenda një blloku implementimi:
impl MyTrait for MyStruct {
fn foo(&self) {
...
}
...
}