rust / beginner
Snippet
Option: unwrap_or and unwrap_or_else
unwrap_or provides a default value when the Option is None, while unwrap_or_else lazily computes the default only when needed. The latter avoids unnecessary computation and is more efficient when the default is expensive to calculate.
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);}
Breakdown
1
num.unwrap_or(0)
Returns inner value if Some, otherwise returns 0
2
unwrap_or_else(|| {
Closure that computes default value lazily
3
println!("Computing default...");
Only executes when Option is None
4
99
Default value returned when result is None