trait Named { fn say_name(&self) -> String; } trait Bold { fn write_bold(&self); } impl Bold for T { fn write_bold(&self) { println!("!bold {}", self.say_name()) } } struct Person { name: String, } impl Named for Person { fn say_name(&self) -> String { self.name.clone() } } fn main() { let p = Person{name: String::from("Jasper")}; p.write_bold(); }