1.简介
option枚举定义在标准库中,在prelude(预导入模块)中
用于: 某个值可能存在或不存在的情况,也可能存在是未知类型的
2.rust没有null
null 是一个值,它的意思是“没有值”
一个变量可以处于非空、空值(null)两种状态
然而,null是一个错误的设计,当使用非null值那样使用null值的时候,就会引起某种错误。
故而,rust中没有null
但是,null的概念仍然有用,他代表因某种原因而变为无效或缺失的值。
所以,rust中有一个类似null概念的枚举
3.枚举option
在标准库中的定义
enum Option<T> {
Some(T),
None,
}
它包含在prelude预导入模块中,可以直接使用
Option<T>
Some(T)
None
let some_number = Some(5);
let some_string = Some("i am hdat");
// 无法自动推断,所以需要显示声明T
let absent:Option<i32> = None;
Option T 比Null好在哪
- Option T 和 T 是不同的类型,不可以把Option T 直接当成 T
let x = 5;
let y = Some(5);
let sum = x + y; //这样是无法相加的
let x = 5;
let y = Some(5);
let sum = x + y.unwrap_or(0); // 10
若想使用Option T中的T,必须将他转换为T