Объявление перечисления enum
Ключевое слово enum объявляет перечисление - тип данных, который может принимать одно из нескольких заранее определённых значений, называемых вариантами. Каждый вариант может быть простым именем, кортежным вариантом с данными или структурным вариантом с именованными полями. Перечисления часто используются для моделирования состояний, результатов операций и выбора из нескольких альтернатив.
Синтаксис
enum Name
{
Variant1,
Variant2,
Variant3,
}
Пример
Давайте объявим простое перечисление с тремя вариантами и выведем один из них:
enum Direction
{
North,
South,
East,
}
fn main()
{
let dir = Direction::North;
match dir
{
Direction::North => println!("North"),
Direction::South => println!("South"),
Direction::East => println!("East"),
}
}
Результат выполнения кода:
"North"
Пример
Давайте объявим перечисление с кортежными вариантами, которые хранят данные:
enum Value
{
Int(i32),
Text(String),
}
fn main()
{
let val = Value::Int(42);
match val
{
Value::Int(n) => println!("{}", n),
Value::Text(s) => println!("{}", s),
}
}
Результат выполнения кода:
42
Пример
Давайте объявим перечисление со структурными вариантами, которые содержат именованные поля:
enum Shape
{
Circle { radius: f64 },
Rectangle { width: f64, height: f64 },
}
fn main()
{
let shape = Shape::Circle { radius: 5.0 };
match shape
{
Shape::Circle { radius } => println!("{}", radius),
Shape::Rectangle { width, height } => println!("{}", width * height),
}
}
Результат выполнения кода:
5
Смотрите также
-
перечисление
enum,
которое объявляет тип с несколькими вариантами -
вариант
unit-variant,
который не хранит данных -
вариант
tuple-variant,
который хранит данные без именованных полей -
вариант
struct-variant,
который хранит данные с именованными полями