Rust踩坑日记(二)Option,Some和None

Option,Some和None

Option是Rust中核心的枚举类型,其提出是为了让空值得到有效的处理。任何可能为空值的结果都应被处理为Option。
Option<T>的值,有Some(T)和None两种。

常用的取值方法

unwarp()

  1. 当Some(T)调用时,能将T类型的值取出,若T未实现Copy trait,则发生所有权转移。
  2. 当None调用时,若在编译阶段,会由编译器报错,无法通过编译;若在运行阶段,程序会Panic。
  3. 调用unwarp的Option不要求是mut的。
  4. 为了防止None调用unwarp(),除了进行None检查外,还可以选各站调用unwarp_or系列方法,让程序在检测到None时自动进行额外处理。
let a_string_option = Some(String::new());
let res:String = a_string_option.unwrap_or_default();

if/while let

 if let Some(a_T) = a_option { 
  //a_T生命周期仅在花括号内生效。
  //a_option将发生move或copy。
}

 while let Some(a_T) = a_option { 
  //当a_option 为None时退出循环。
  //若T没有实现Copy,则需要在花括号中为a_option进行修改。
}

match

match a_string_option {
    Some(_a_string) =>println!("{}",_a_string),//匹配成功
    _=>{}//'_'表示其余匹配结果,在这里除了Some,自然是None。
}

replace()与take()

  1. replace方法顾名思义,用参数的值替换原Option内的值。将原值用Some包装后返回。
  2. take方法相当于replace的空值版本,原来的Option变量留下None值。
  3. 执行replace和take方法后的Option仍是有效的,并未发生move。
  4. replace和take方法的Option都会要求mut。
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值