rust option 學習

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)
相關文章
相關標籤/搜索