Rust logo
Rust 1.29.0
aa3ca1994

Universal Function Call Syntax

There is a new edition of the book and this is an old link.

Rust cannot prevent a trait from having a method with the same name as another trait’s method, nor can it prevent us from implementing both of these traits on one type. In order to be able to call each of the methods with the same name, then, we need to tell Rust which one we want to use.

trait Pilot {
    fn fly(&self);
}

trait Wizard {
    fn fly(&self);
}

struct Human;

impl Pilot for Human {
}

impl Wizard for Human {
}

impl Human {
}

fn main() {
    let person = Human;
    Pilot::fly(&person);
    Wizard::fly(&person);
    person.fly();
}Run

Here are the relevant sections in the new and old books: