capypad
0 Tage Serie
rust / beginner
Snippet

Option: unwrap_or und unwrap_or_else

unwrap_or liefert einen Standardwert, wenn das Option None ist, während unwrap_or_else den Standardwert träge nur bei Bedarf berechnet. Letzteres vermeidet unnötige Berechnungen und ist effizienter, wenn der Standardwert teuer zu berechnen ist.

snippet.rs
rust
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
fn main() {
let numbers = [Some(42), None, Some(100)];
for num in numbers.iter() {
let value = num.unwrap_or(0);
println!("Got: {}", value);
}
let result: Option<i32> = None;
let value = result.unwrap_or_else(|| {
println!("Computing default...");
99
});
println!("Value: {}", value);
}
Erklärung
1
num.unwrap_or(0)
Gibt inneren Wert zurück wenn Some, sonst 0
2
unwrap_or_else(|| {
Closure, das Standardwert träge berechnet
3
println!("Computing default...");
Wird nur ausgeführt wenn Option None ist
4
99
Standardwert, der zurückgegeben wird wenn result None ist