// Created on savesnippets.com · https://savesnippets.com/4WtyphGGLMcT8g fn main() { let n = Some(5); // map — transform the inner value, leave None alone println!("{:?}", n.map(|x| x * 2)); // Some(10) println!("{:?}", None::.map(|x| x * 2)); // None // and_then — flatMap; lets the closure return another Option let parsed: Option = "42".parse().ok(); let plus_one = parsed.and_then(|n| n.checked_add(1)); println!("{:?}", plus_one); // Some(43) // unwrap_or / unwrap_or_else — supply a fallback let v: Option = None; println!("{}", v.unwrap_or(0)); // 0 println!("{}", v.unwrap_or_else(|| expensive())); // 99 (only called if None) // filter — keep Some only if predicate holds println!("{:?}", Some(7).filter(|&x| x > 10)); // None } fn expensive() -> i32 { 99 }