Давайте посмотрим, что такое 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); }
Приведенный выше фрагмент кода при выполнении выдаст следующую ошибку
При печати значений перечисления следует помнить о двух вещах.
- Вы не можете просто использовать «{}» в операторе печати, вместо этого вы должны использовать «{:?}» при печати значений перечисления.
- Вы должны добавить #[derive(Debug)] перед созданием вашего перечисления, атрибут производного автоматически создает реализацию для печати ваших значений перечисления.
Ниже приведен правильный фрагмент кода для печати значений перечисления.
fn main() { #[derive(Debug)] enum FuelType { petrol, diesel } println!("{:?}", FuelType::petrol); }
Приведенный выше фрагмент кода при выполнении даст следующий результат
petrol
Вот как мы можем создавать и использовать перечисления в rust.
Давайте рассмотрим черту и ее реализацию в следующем разделе.