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