Rust logo
Rust 1.83.0
90b35a623

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();
}

You can find the latest version of this information here.