Rust 简明教程

Rust 枚举

1. 枚举 (Enums)

枚举(Enum,“enumeration”的缩写)是一种定义可能为少数几种不同值之一的类型的方法。

枚举中的每个值都被称为一个变体(variant)。

当您需要表示只能是一组预设选项之一的值时,枚举非常有用——例如星期几、方向,或者像成功和错误这样的结果。

2. 创建枚举

要创建枚举,请使用 enum 关键字,并添加一组由逗号分隔的命名值(变体):

示例

enum Direction {
  Up,
  Down,
  Left,
  Right,
}

要使用该枚举,请创建一个变量并为其分配其中一个枚举变体(使用 :: 来访问变体):

示例

enum Direction {
  Up,
  Down,
  Left,
  Right,
}

fn main() {
  let my_direction = Direction::Up;
  println!("We are going up!");
}

3. 对枚举值进行匹配 (Match)

枚举与 match 语句搭配使用非常出色。您可以根据使用的是哪个变体来执行不同的代码:

示例

enum Direction {
  Up,
  Down,
  Left,
  Right,
}

fn main() {
  let my_direction = Direction::Left;

  match my_direction {
    Direction::Up => println!("Going up"),
    Direction::Down => println!("Going down"),
    Direction::Left => println!("Going left"),
    Direction::Right => println!("Going right"),
  }
}

4. 包含数据的枚举

枚举变体也可以保存数据。当每个变体需要存储额外信息时,这非常有用:

示例

enum LoginStatus {
  Success(String),
  Error(String),
}

fn main() {
  let result1 = LoginStatus::Success(String::from("Welcome, John!"));
  let result2 = LoginStatus::Error(String::from("Incorrect password"));

  match result1 {
    LoginStatus::Success(message) => println!("Success: {}", message),
    LoginStatus::Error(message) => println!("Error: {}", message),
  }
}

5. 为什么使用枚举?

  • 将相关联的值分组到一个类型中
  • 使您的代码更具可读性和安全性
  • 结合 match 处理不同的情况分支