Давайте посмотрим, что такое enums и как мы можем реализовать его в rust lang.

Примечание. Пожалуйста, ознакомьтесь с предыдущим разделом руководства, чтобы понять, что такое Struct в rust.

Предыдущий раздел:https://medium.com/@manikandan96372/rust-for-beginners-part-9-struct-a1e6a0797b23

Enums в rust помогает нам создать тип, который может содержать в себе различный набор значений.

Как мы обсуждали в предыдущем разделе о структуре автомобиля, давайте рассмотрим, что нам нужно добавить к ней тип топлива в качестве поля, поскольку типы топлива — это известный набор значений, мы попробуем реализовать это с помощью перечислений.

Следующий фрагмент кода показывает реализацию перечислений в rust.

fn main() {
 enum FuelType {
  petrol,
  diesel
 }
}

Здесь мы создали тип перечисления с ключевым словом enum, за которым следует имя перечисления, за которым следуют фигурные скобки, внутри которых мы добавили наш набор значений, здесь это бензин и дизель.

Мы можем получить доступ к нашим значениям перечисления, используя ::, следующая строка показывает, как вы должны получить доступ к значению бензина.

FuelType::petrol

Теперь давайте попробуем напечатать значения перечисления

fn main() {
enum FuelType {
  petrol,
  diesel
}
println!("{}", FuelType::petrol);
}

Приведенный выше фрагмент кода при выполнении выдаст следующую ошибку

При печати значений перечисления следует помнить о двух вещах.

  1. Вы не можете просто использовать «{}» в операторе печати, вместо этого вы должны использовать «{:?}» при печати значений перечисления.
  2. Вы должны добавить #[derive(Debug)] перед созданием вашего перечисления, атрибут производного автоматически создает реализацию для печати ваших значений перечисления.

Ниже приведен правильный фрагмент кода для печати значений перечисления.

fn main() {
 #[derive(Debug)]
 enum FuelType {
   petrol,
   diesel
 }
 println!("{:?}", FuelType::petrol);
}

Приведенный выше фрагмент кода при выполнении даст следующий результат

petrol

Вот как мы можем создавать и использовать перечисления в rust.

Давайте рассмотрим черту и ее реализацию в следующем разделе.