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
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