capypad
0 Tage Serie
rust / beginner
Snippet

Umgang mit optionalen Werten mit Option

Option<T> repräsentiert einen Wert, der existieren könnte oder auch nicht, und vermeidet Null-Referenzen. Some enthält einen Wert, None repräsentiert Abwesenheit. Die if let-Syntax bietet prägnantes Pattern Matching, während unwrap_or einen Standardwert liefert.

snippet.rs
rust
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
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);
}
let unknown = find_user(999);
println!("User: {:?}", unknown.unwrap_or("Guest"));
}
Erklärung
1
fn find_user(id: u32) -> Option<&'static str>
Gibt Some(name) oder None zurück, abhängig von der id
2
if let Some(name) = user
Führt den Block nur aus, wenn user Some ist, bindet Wert an name
3
unwrap_or("Guest")
Gibt den Wert in Some zurück, oder den Standardwert wenn None