Компактный match
в Rust
match
часто используется для работы с енумами, посмотрим на такой пример:
enum NextStep {
TurnLeft,
TurnRight
}
fn main() {
let next_step = NextStep::TurnLeft;
match next_step {
NextStep::TurnLeft => println!("turn left"),
NextStep::TurnRight => println!("turn right"),
}
}
Это может быть не очевидно, но енумы в Rust можно принести в текущее пространство имен, это позволяет сделать код более компактным:
// ...
use NextStep::*;
match next_step {
TurnLeft => println!("turn left"),
TurnRight => println!("turn right"),
}
// ...
Ну, а чтобы ограничить эффект только одним match
, придется задать границы используя {}
для дополнительного блока:
// ...
{
use NextStep::*;
match next_step {
// ...
}
}
// ...