mapcode
只對正確值作處理,而對 None不作任何處理
map_orio
對正確值作處理,而對 None使用默認值
let x = Some("foo"); assert_eq!(x.map_or(42, |v| v.len()), 3); let x: Option<&str> = None; assert_eq!(x.map_or(42, |v| v.len()), 42);
map_or_elsemap
對正確值作處理,而對 None計算出默認值
let k = 21; let x = Some("foo"); assert_eq!(x.map_or_else(|| 2 * k, |v| v.len()), 3); let x: Option<&str> = None; assert_eq!(x.map_or_else(|| 2 * k, |v| v.len()), 42);
and_then語言
相似於map(其餘語言裏有叫flat_map),不一樣的是block裏面的結果必須是個Option
let some_number = Some(9); let another_number = some_number .map(|n| n - 1) // => Some(8) .map(|n| n * n) // => Some(64) .and_then(|n| Some(n/4)); // => Some(16)