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'.

Step 1 / 2

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()).
10_traits_generics.rs
Reset to starterCompiled in a sandbox; hidden checks must pass.
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") }
}