Rust logo
Rust 1.77.1
7cf61ebde

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

You can find the latest version of this information here.