Objektorientierte Programmierung
OOP
Verständnis
Einige (nicht alle) Merkmale der Polymorphie
Abstraktion: Objekte enthalten Daten und Verhalten (Objects Contain Data and Behavior)
Kapselung: Implementierungsdetails verbergen (Encapsulation that Hides Implementation Details)
Vererbung: als Typsystem und zur gemeinsamen Nutzung von Code (Inheritance as a Type System and as Code Sharing)
Trait-Objekt
Box<dyn traitA>ist ein Trait-Objekt. Rust löst es zur Laufzeit auf, was Leistung kostet – möglichst sparsam verwenden.pub trait Draw { fn draw(&self); } // trait object pub struct Screen { pub components: Vec<Box<dyn Draw>>, } impl Screen { pub fn run(&self) { for component in self.components.iter() { component.draw(); } } } // generic type + trait buond pub struct Screen<T: Draw> { pub components: Vec<T>, } impl<T> Screen<T> where T: Draw, { pub fn run(&self) { for component in self.components.iter() { component.draw(); } } }