Rust 学习笔记(12)-match

match 允许我们将一个值与一系列的模式相比较,并根据相匹配的模式执行相应代码。

上一节我们学习了Option<T>,这一节我们就来学习下,如何处理Option<T>

  • 我们先看一个简单的例子,处理Option<T>
 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
fn main() {
    let x: i8 = 5;
    let y: Option<i8> = Some(5);

    // 处理`Option`
    let z = match y {
            Some(i) => i,
            None => 0,
    };

    let sum = i + z;
}

Rust 学习笔记(11)-Option

我们之前提到了在Rust中有一个非常常用的枚举 Option,它的原型是如下的样子

1
2
3
4
enum Option<T> {
    None,
    Some(T),
}

它代表了有值和没有值的情况,成员 None 代表没有值,也就是空值的情况,Some(T) 代表了有值的情况,换句话说 Option<T> 代表了一个可能为空的值

Option<T> 枚举是如此有用以至于它甚至被包含在了 prelude 之中,你不需要将其显式引入作用域。另外,它的成员也是如此,可以不需要 Option:: 前缀来直接使用 Some 和 None。即便如此 Some(T) 和 None 仍是 Option 的成员。

这有什么好处或者说什么用处呢?Rust为什么要这么设计它?它和其他语言中的null有什么不同?下面我说说我的见解

Rust 学习笔记(10)-枚举

本篇是阅读 《Rust 程序设计语言》第6.1章 枚举 而来的结果

枚举是一个很多语言都有的功能,不过不同语言中其功能各不相同,Rust中的枚举允许你通过列举可能的成员(variants)来定义一个类型

枚举主要作用是限制传入或传出的类型,避免出现其他类型,这在Rust中有一个著名的枚举 Option 我们稍后会学习