Traits
Rust permite abstrair características dos tipos usando trait
. Eles são semelhantes a interfaces:
trait Pet { fn name(&self) -> String; } struct Dog { name: String, } struct Cat; impl Pet for Dog { fn name(&self) -> String { self.name.clone() } } impl Pet for Cat { fn name(&self) -> String { String::from("Gato") // Sem nomes, gatos não respondem mesmo. } } fn greet<P: Pet>(pet: &P) { println!("Quem é? É o {}!", pet.name()); } fn main() { let fido = Dog { name: "Bidu".into() }; greet(&fido); let captain_floof = Cat; greet(&captain_floof); }