💡 1. Enums mit Daten & die Option-Monade
Enums in Rust sind algebraische Datentypen (Sum Types). Jede Variante kann unterschiedliche Nutzdaten tragen:
#[derive(Debug)]
pub enum WebEvent {
PageLoad,
KeyPress(char),
Click { x: i64, y: i64 },
}
// Sicheres Null-Handling mit Option:
fn finde_benutzer(id: u32) -> Option {
if id == 42 {
Some("SuperAdmin".to_string())
} else {
None
}
}
// Verwendung mit if let:
if let Some(name) = finde_benutzer(42) {
println!("Gefunden: {}", name);
}
`Option
⚡ 2. Quick-Cheat-Sheet
| Variante | Bedeutung | Verarbeitungsmuster |
|---|---|---|
Some(val) | Wert ist vorhanden | Entpacken mit `match` oder `if let` |
None | Kein Wert vorhanden | Abfangen mit Fallback (`.unwrap_or()`) |
unwrap() | Holt Wert direkt | Gefährlich! Panikt bei `None` |
if let | Kompakter Einzelfall-Match | Ignoriert alle anderen Fälle elegant |
⚠️ 3. Häufige Stolperfallen (Gotchas & Anti-Patterns)
Der Aufruf von opt.unwrap() auf einem None bringt das Programm sofort zum Paniken. Bevorzuge match, if let oder .unwrap_or_default().
Enums in Rust sind keine bloßen Integer-Konstanten wie in C, sondern echte Datenträger!
🧠 4. Diagnostischer Selbst-Check
Überprüfe dein Verständnis von Ownership, Borrowing und Speichersicherheit, bevor du den Code in der Web-IDE schreibst.