在 Rust 中,枚举(Enum)是一种用户自定义的数据类型,用于表示一个值可以是多个可能的变体之一。枚举允许你在一种类型中包含多个不同的值,每个值称为一个变体。以下是 Rust 枚举的基本语法:
// 定义一个枚举
enum Direction {
    Up,
    Down,
    Left,
    Right,
}

// 使用枚举
let player_direction = Direction::Up;

在这个例子中,Direction 是一个简单的枚举,包含四个变体(Up、Down、Left 和 Right)。通过 Direction::Up,你可以创建一个 Direction 类型的实例。

带有关联数据的枚举:

枚举的变体可以携带关联数据,使其更灵活。这些枚举称为具有关联数据的枚举。
enum Shape {
    Circle(f64),
    Rectangle(f64, f64),
    Square(f64),
}

// 使用枚举的变体
let circle = Shape::Circle(5.0);
let rectangle = Shape::Rectangle(4.0, 6.0);
let square = Shape::Square(3.0);

在这个例子中,Shape 枚举具有三个变体,分别表示圆、矩形和正方形,每个变体携带了不同的关联数据。

包含方法的枚举:

枚举可以包含方法,使其更加灵活。例如:
enum Message {
    Quit,
    Move { x: i32, y: i32 },
    Write(String),
    ChangeColor(i32, i32, i32),
}

impl Message {
    // 枚举的方法
    fn print(&self) {
        match self {
            Message::Quit => println!("Quit"),
            Message::Move { x, y } => println!("Move to ({}, {})", x, y),
            Message::Write(text) => println!("Write: {}", text),
            Message::ChangeColor(r, g, b) => println!("Change color to ({}, {}, {})", r, g, b),
        }
    }
}

fn main() {
    let message = Message::Write(String::from("Hello, Rust!"));
    message.print();
}

在这个例子中,Message 枚举具有一个 print 方法,用于根据不同的变体打印信息。

枚举在 Rust 中用于表示一组可能的状态或选项,使代码更加清晰和安全。通过模式匹配,你可以轻松处理枚举的各种变体。


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