capypad
0 day streak
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
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);
}
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