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直接分开了。
对于定义为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类型,而且必然不为空值
}
posted @ 2022-10-30 17:40  wenli7363  阅读(155)  评论(0编辑  收藏  举报