book/redirects/ufcs.md

1.0 KiB
Raw Permalink Blame History

% 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 traits 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 {
#     fn fly(&self) {
#         println!("This is your captain speaking.");
#     }
}

impl Wizard for Human {
#     fn fly(&self) {
#         println!("Up!");
#     }
}

impl Human {
#     fn fly(&self) {
#         println!("*waving arms furiously*");
#     }
}

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

You can find the latest version of this information here.