| .. | ||
| aufgabe.rs | ||
| index.html | ||
| musterloesung.rs | ||
| README.md | ||
| test_aufgabe.rs | ||
Rust 10: Generics & Dynamischer Dispatch
Lerne den fundamentalen Unterschied zwischen statischem Dispatch (Monomorphisierung) und dynamischem Dispatch (Trait Objects mit dyn Trait) kennen.
🎯 Lernziele
- Generische Structs & Methoden: Typ-unabhängigen Code mit
struct Container<T>undimpl<T> Container<T>schreiben. - Monomorphisierung: Verstehen, wie der Rust-Compiler generischen Code zur Compile-Zeit dupliziert (Zero-Cost Abstractions).
- Trait Objects (
dyn Trait): Trait-Objekte mitBox<dyn Trait>oder&dyn Traitfür heterogene Collections erstellen. - Vtable & Fat Pointer: Aufbau von Trait Objects (Datenpointer + vtable-Pointer) nachvollziehen.
💡 Schlüsselkonzepte
1. Statischer Dispatch (Generics)
fn process_static<T: DataPlugin>(plugin: &T, input: &str) -> String {
plugin.process(input) // Direkter Aufruf, vom Compiler inline-optimiert
}
2. Dynamischer Dispatch (dyn Trait)
fn process_dynamic(plugin: &dyn DataPlugin, input: &str) -> String {
plugin.process(input) // vtable Lookup zur Laufzeit
}
🧪 Tests ausführen
rustc --test test_aufgabe.rs && ./test_aufgabe