rust中Option枚举
Option枚举
Option枚举是rust标准库中prelude的一种枚举,主要是表示那些可能为空的情况。
1. 简单的背景介绍
很明显大多数编程语言对于数据,分为空与非空两种,但是并不对两者进行数据类型上的区分,最多就是将空设置为NULL
。
那么这就造成了一个问题:如果我们不知道一个数据为NULL
,但是依然对这个NULL值进行了操作,这就会产生一些意外的问题。
举个简单的例子,用c语言写个加法函数,最常见的解决方法如下:
int x,y;
int add(int x,int y){
if(x==NULL||y==NULL) return; //判空操作
return x+y;
}
2. Rust对空值的处理
在rust中,并没有像NULL
的空值表示,他的思想而是将空值和非空值分为两种数据结构。
于是就引入了Option<T>
这种枚举类型。
Option枚举类型
Option枚举是一种枚举数据类型,表示一个值可能为空值的情况
官方定义如下
enum Option<T>{
Some(T), //值不为空
None, //空值的情况
}
这样将空值和非空值直接分开了,也就是Option
对于定义为T
的数据,一定是非空的,无论你做什么操作,都可以不判空。
对于定义为Option<T>
的数据,就有可能为空,也有可能不为空,在非None
情况下,将Option<t>
转化为
3. 举例
同样是rust下的一个加法
fn main(){
let x:i8=5;
let y:Option<i8>=Some(5);
let z:i8=6;
let sum=x+y; //报错,因为x,y数据类型不同
let sum=x+z; //没有问题,都是i8类型,而且必然不为空值
}