option枚举

103 阅读1分钟

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