// Mit Interfaces aus Java vergleichbar trait Flieger { fn new() -> Self; // Eine new Funktion, um ein Struct zurück zu geben fn fliegen(&self); // Instanzmethode, die Zeug macht, das noch nicht bekannt ist fn landen(&self); } struct Flugeug {} struct Ente {} // Hier implementieren wir die Methoden vom Flieger Trait für Flugzeug impl Flieger for Flugeug { fn new() -> Self { return Flugeug {}; } fn fliegen(&self) { println!("Ich heb ab, nichts hält mich am Boden"); } fn landen(&self) { println!("Party vorbei, ich lande") } } // Hier implementieren wir die Methoden vom Flieger Trait für Ente impl Flieger for Ente { fn new() -> Self { return Ente {}; } fn fliegen(&self) { println!("Quak, ich fliege, quak"); } fn landen(&self) { println!("Quak, ich lande nun, quak"); } } fn main() { let flugzeug: Flugeug = Flieger::new(); let ente: Ente = Flieger::new(); flugzeug.fliegen(); flugzeug.landen(); ente.fliegen(); ente.landen(); }