rust学习笔记之Option<T>

199 阅读1分钟

概念

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。