Trait (Rust)
Het mechanisme van Rust voor gedeeld gedrag. Lijkt op interfaces (Java) of typeclasses (Haskell): trait Animal { fn speak(&self) -> String; }. Wordt los van het type geïmplementeerd.
Verschilt van een Java-interface doordat je een trait ook voor types kunt implementeren die je niet zelf bezit (al beperkt de orphan rule dit tussen crates). Standaardimplementaties: een trait kan een methode meegeven die weer overschreven mag worden. Trait objects (dyn Trait) geven runtime-polymorfisme (op basis van een vtable). Static dispatch (generics met trait bounds) is de standaard — monomorphization.
Belangrijke standaardtraits: Clone, Debug, Display, Iterator, Serialize/Deserialize. Async traits werden gestabiliseerd in Rust 1.75 (2023).