# Option枚举

## 概述

Rust中，Some是枚举类型。&#x20;

Some是枚举类型Option的一个枚举值，另一个枚举值是None，所以Some的类型是Option。&#x20;

枚举体中的所以变量名都会被赋值，其值从0开始，向正数方向增加，且定义后不可改变值。&#x20;

Rust 语言枚举体不仅可以包含枚举项，每个枚举项还可以包含值。 在传递与赋值时没有意义,不需要特别的结构。

## 格式

```rust
pub enum Option<T> {
    Some(T), // 表示有值，值的类型为T
    None, // 表示没有值
}
```

## 创建

```rust
// 返回一个Option类型枚举
Some(T)
```

### 案例一

```rust
// 用 s 使用 Some 函数 创建 i
if let Some(i) = s { // 如果s为空,则该代码块不会被执行,Some在赋值时无意义,不需要解构
    println!("{}", i);
} else {
    {}
}
```

### 案例二

```rust
let mut a = Some(1);
match a {
   Some(i) => { // a 有值匹配,a赋值给i
      println!("{:?}",i)
   }
   _ => {
      println!("22")
   }
}

// 掏空
a.take();
match a {
   Some(i) => { 
      println!("{:?}",i)
   }
   _ => { // a 无值匹配,a赋值给i
      println!("22")
   }
}
```
