// 定义一个枚举
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