Перечисления с данными
Элементы enum
также могут иметь один и больше типов данных, позволяя им вести себя как union из языка Cи.
Когда enum
сопоставляется с серией шаблонов используя match
(или матчится, англ. is pattern matched), вы можете связать имя переменной с каждым значением или полем структуры.
Детали для запоминания по enum
:
- Перечисление будет иметь размер в памяти, равный наибольшей величине для наибольшего его элемента. Это позволяет всем потенциальным значениям вместиться в одну и ту же область памяти (без дополнительных выделений памяти).
- Элементы перечисления имеют невидимый числовой тэг в дополнение к типу данных, который этот элемент и так имеет.
Еще немного информации:
enum
Rust(а) иногда называют типом-сумой (tagged-union)
- Комбинирование разных типов для создания нового типа - это то, что люди имеют ввиду, когда говорят, что Rust имеет алгебраические типы