Implementando Traits
trait Pet { fn talk(&self) -> String; fn greet(&self) { println!("Oh, vocĂȘ Ă© adorĂĄvel! Qual Ă© o seu nome? {}", self.talk()); } } struct Dog { name: String, age: i8, } impl Pet for Dog { fn talk(&self) -> String { format!("Auau, meu nome Ă© {}", self.name) } } fn main() { let fido = Dog { name: String::from("Bidu"), age: 5 }; fido.greet(); }
-
Para implementar
Trait
paraType
, vocĂȘ usa um blocoimpl Trait for Type { .. }
. -
Ao contrårio das interfaces Go, apenas ter métodos correspondentes não é suficiente: um tipo
Cat
com um métodotalk()
nĂŁo satisfaria automaticamentePet
a menos que esteja em um blocoimpl Pet
. -
Os traits podem fornecer implementaçÔes padrão de alguns métodos. As implementaçÔes padrão podem depender de todos os métodos do trait. Neste caso,
greet
Ă© fornecido e depende detalk
.