trait Animal {
fn name(&self) -> String;
}
trait Speak: Animal {
fn speak(&self) {
println!("{} can't speak", self.name());
}
}
struct Dog {
name: String
}
impl Animal for Dog {
fn name(&self) -> String {
self.name.clone()
}
}
impl Speak for Dog {}
#[test]
pub fn test_nested_traits() {
let dog = Dog { name: String::from("Fido") };
dog.speak(); // prints "Fido can't speak"
}