Rust : 独一无二的Some

你听说过哪个语言有Some?, 别的不知道,Rust中却是常用的。
1、some=>不同的结构

let v = vec![1, 2];
let res: Option<Vec<_>> = v.iter().map(|x| Some(x *2)).collect();
assert_eq!(res,Some([2,4]))

注意:以下两者不相等

res !=vec![Some(2),Some(4)] 

2、some单个值可以map

let mut number = Some(10);
let var = number.map(|n| 2 * n);
println!("var:{:?}", var);

3、Some,None

let x = Some("string");
let v: Vec<&str> = x.into_iter().collect();
assert_eq!(v, ["string"]);

let x = None;
let v: Vec<&str> = x.into_iter().collect();
assert!(v.is_empty());

4、clone: Option<&T> => Option

let x = 12;
let opt_x = Some(&x);
assert_eq!(opt_x, Some(&12));
let cloned = opt_x.cloned();
assert_eq!(cloned, Some(12));

5、take : 淘空

let mut x = Some(2);
x.take();
assert_eq!(x, None);

let mut x: Option<u32> = None;
x.take();
assert_eq!(x, None);
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值