Core Intermediate
10 Traits & generics
Traits are Rust's interfaces; generics let one function serve many types. Give a trait a default method, then write a generic 'largest'.
Give the Animal trait a default greet body returning "Hi, I'm <name>".
Hints
- A trait can supply a default body that impls inherit for free.
format!("Hi, I'm {}", self.name()).
Reveal solution
trait Animal {
fn name(&self) -> String;
fn greet(&self) -> String {
format!("Hi, I'm {}", self.name())
}
}
struct Dog;
impl Animal for Dog {
fn name(&self) -> String { String::from("Rex") }
}