Rust logo
Rust 1.26.1
2f5aa60d7

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: