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)
相关文章
相关标签/搜索