rust option 学习

map

只对正确值做处理,而对 None不做任何处理

map_or

对正确值做处理,而对 None使用默认值
let x = Some("foo");
assert_eq!(x.map_or(42, |v| v.len()), Some(3));

let x: Option<&str> = None;
assert_eq!(x.map_or(42, |v| v.len()), Some(42));

map_or_else

对正确值做处理,而对 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)

转载于:https://my.oschina.net/u/855913/blog/3065523

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值