在 Rust 中,枚举(Enum)是一种允许你定义一个类型,该类型的值可以是几个预定义的变体中的一个。枚举允许你在一个类型中表示多种可能的状态。

以下是一个简单的枚举示例:
// 定义一个名为 `Color` 的枚举
enum Color {
    Red,
    Green,
    Blue,
}

fn main() {
    // 创建一个 `Color` 枚举的实例
    let color = Color::Red;

    // 匹配枚举的变体
    match color {
        Color::Red => println!("It's red!"),
        Color::Green => println!("It's green!"),
        Color::Blue => println!("It's blue!"),
    }
}

在上面的例子中,我们定义了一个名为 Color 的枚举,它有三个变体:Red、Green 和 Blue。然后,我们创建了一个 Color 枚举的实例,并使用 match 表达式来匹配枚举的变体,以执行相应的操作。

枚举还可以携带数据,使其更加灵活。以下是一个带有数据的枚举示例:
// 定义一个名为 `Shape` 的枚举,其中的变体携带不同类型的数据
enum Shape {
    Circle(f64),   // 圆,携带半径数据
    Rectangle(u32, u32),   // 矩形,携带宽度和高度数据
}

fn main() {
    // 创建一个 `Shape` 枚举的实例
    let circle = Shape::Circle(5.0);
    let rectangle = Shape::Rectangle(10, 20);

    // 匹配枚举的变体,并提取携带的数据
    match circle {
        Shape::Circle(radius) => println!("Circle with radius: {}", radius),
        Shape::Rectangle(width, height) => println!("Rectangle with width {} and height {}", width, height),
    }

    match rectangle {
        Shape::Circle(radius) => println!("Circle with radius: {}", radius),
        Shape::Rectangle(width, height) => println!("Rectangle with width {} and height {}", width, height),
    }
}

在这个例子中,我们定义了一个名为 Shape 的枚举,其中包含两个变体:Circle 和 Rectangle。这两个变体都携带不同类型的数据。然后,我们创建了 Shape 枚举的两个实例,并使用 match 表达式来匹配枚举的变体并提取携带的数据。

Rust 的枚举提供了一种强大的工具,用于表达代码中可能的不同状态。它在编写安全、清晰的代码时具有很大的灵活性。


转载请注明出处:http://www.zyzy.cn/article/detail/6795/Rust