Fully Qualified Syntax
Fully qualified syntax need to be used to call a struct's functions if the struct implements several traits having same function names.
trait Duck { fn walk(&self) { println!("walking like a duck.") } } trait Chicken { fn walk(&self) { println!("walking like a chicken.") } } struct Person { name: String, } impl Person { fn walk(&self) { println!("walking like a human.") } } impl Duck for Person {} impl Chicken for Person {} fn main() { let p = Person { name: String::from("Ryan"), }; println!("My name is {}. And I am ", p.name); p.walk(); Duck::walk(&p); Chicken::walk(&p); <Person as Duck>::walk(&p); <Person as Chicken>::walk(&p); }