- Dynamic Sidebar mit window.COURSES_MANIFEST für 13 Kurse (216 Kapitel) - Kurswechsler Dropdown mit Direktnavigation - Fortschrittsanzeige mit Solved-Checkmarks (✓) aus localStorage - Responsive Off-Canvas Drawer mit Floating Action Button (☰ Kapitel) & Backdrop auf Mobile/Tablets - Web-IDE Topbar Drawer-Button (☰ Kapitel) für unterbrechungsfreien Vollbild-Editor - Saubere Bereinigung redundanter statischer Legacy-Sidebars |
||
|---|---|---|
| .. | ||
| 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