capypad
0 Tage Serie
rust / beginner
Snippet

Arbeiten mit Option<T> für optionale Werte

Option<T> ist Rusts Weg, mit Werten umzugehen, die existieren könnten oder auch nicht, und eliminiert Null-Zeiger-Ausnahmen. Anstatt null zurückzugeben, gibst du Some(wert) oder None zurück. Die if let Syntax entpackt den Wert nur, wenn er existiert, was den Code lesbar und sicher macht. Die unwrap_or Methode liefert einen Standardwert, wenn None auftritt.

snippet.rs
rust
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
fn find_user(id: u32) -> Option<String> {
if id == 1 {
Some(String::from("Alice"))
} else {
None
}
}
 
fn main() {
let user = find_user(1);
// Using if let to extract the value
if let Some(name) = user {
println!("Found user: {}", name);
} else {
println!("User not found");
}
// Using unwrap_or for default value
let another_user = find_user(999).unwrap_or(String::from("Guest"));
println!("Another user: {}", another_user);
}
Erklärung
1
fn find_user(id: u32) -> Option<String> {
Funktion gibt Option<String> statt einer einfachen String zurück
2
Some(String::from("Alice"))
Gibt Some mit einem Wert zurück, wenn Benutzer gefunden wird
3
None
Gibt None zurück, wenn Benutzer nicht existiert
4
if let Some(name) = user {
Entpackt Wert aus Option nur, wenn es Some ist