capypad
0 Tage Serie
rust / intermediate
Snippet

Option<T> für Null-Sicherheit

Rust kennt keine Null-Werte. Stattdessen repräsentiert Option<T> optionale Werte: Some(T) enthält einen Wert, None repräsentiert Abwesenheit. Dies macht Null-Zeiger-Ausnahmen zur Kompilierzeit unmöglich. Die if let-Syntax bietet bequemen Musterabgleich, während unwrap_or einen sicheren Standard-Fallback bietet.

snippet.rs
rust
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
fn find_user(id: u32) -> Option<&'static str> {
match id {
1 => Some("Alice"),
2 => Some("Bob"),
_ => None,
}
}
 
fn main() {
let user = find_user(1);
if let Some(name) = user {
println!("Found: {}", name);
} else {
println!("User not found");
}
// Using unwrap_or for default values
let missing = find_user(999).unwrap_or("Guest");
println!("Missing user: {}", missing);
}
Erklärung
1
fn find_user(id: u32) -> Option<&'static str>
Funktion gibt Option zurück — entweder Some(name) oder None
2
Some("Alice")
Verpackt Wert in Some-Variante von Option
3
_ => None
Platzhalter-Muster gibt None für nicht gematchte Fälle zurück
4
if let Some(name) = user { ... }
Bedingte Bindung extrahiert Wert nur wenn Some, ohne explizites match
5
.unwrap_or("Guest")
Gibt enthaltenen Wert oder Standardfall zurück wenn None