概念
Option枚举是预导入的,可以直接使用。在标准库的定义。
enum Option<T>{
Some(T),
None,
}
// 可以自动推断T类型为i32
let present = Some(5);
// None值无法推断,需要声明
let absent: Option<i32> = None;
Option<T>的好处
Null错误:当使用非null值的方式去使用null值时,会引起某些错误。比如null值和非null值的加减。
在Rust中,没有null值,但有null概念,即用Option枚举中的None来代表某种原因变为缺失或无效的值。可以用模式匹配来传入Option类型参数,有点类似其他语言的if x == null。
fn plus_one(x: Option<i32>) -> Option<i32> {
match x {
None => None,
Some(i) => Some(i + 1),
}
}
由于Option<T>和T不是一个类型,在Rust中,只要某个变量的值不是Option<T>类型,那么就可以认为它不可能是空值。并且,如果想使用Option<T>中的T,必须要将其转换成类型T。