- 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 09: Traits & Shared Behavior
In diesem Modul lernst du, wie Rust Polymorphie und gemeinsame Schnittstellen ohne klassische Vererbung abbildet: Traits.
🎯 Lernziele
- Traits definieren: Methodensignaturen mit
pub trait MyTraitfestlegen. - Default-Implementierungen: Standardverhalten in Traits bereitstellen und selektiv überschreiben.
impl Trait for Type: Traits für benutzerdefinierte Structs implementieren.- Trait Bounds (
T: Trait1 + Trait2): Typsichere Einschränkungen für generische Funktionen undwhere-Klauseln. impl Traitals Rückgabetyp: Kapselung konkreter Typen bei statischem Dispatch.
💡 Schlüsselkonzepte
1. Trait-Definition & Default-Methoden
pub trait TelemetryReport {
fn summary(&self) -> String;
// Default-Implementierung
fn severity_level(&self) -> u8 {
1
}
fn is_critical(&self) -> bool {
self.severity_level() >= 8
}
}
2. Trait Bounds & Where-Klauseln
// Kompakte Syntax
fn print_report<T: TelemetryReport + std::fmt::Display>(item: &T) {
println!("{}: {}", item, item.summary());
}
// Lesbar bei vielen Typen mit where-Klausel
fn process<T, U>(t: &T, u: &U)
where
T: TelemetryReport + Clone,
U: std::fmt::Debug,
{
println!("{:?} => {}", u, t.summary());
}
🧪 Tests ausführen
# Mit rustc direkt kompilieren und ausführen
rustc --test test_aufgabe.rs && ./test_aufgabe
# Oder im Kurs-Workspace ausführen