Перечисления

Перечисление есть тип, который может принимать одно из именованных значений.

Объявление перечисления:

enum FixedColor
{
    Black,
    White,
    Red,
    Green,
    Blue,
    Yellow,
    Magenta,
    Cyan,
};

enum Component : i16 // Указан нижележащий тип для перечисления
{
    One,
    Twoo,
    Three,
};

Использование:

var FixedColor mut c= FixedColor::Black;
c= FixedColor::Red;
if( c == FixedColor::Red ) {}

Значения типов перечислений можно присваивать, сравнивать на равенство, преобразовывать в целое число, использовать в качестве аргументов шаблонов. При преобразовании в целое число будет получено целочисленное значение равное порядковому номеру значения перечисления при объявлении, начиная с 0.

Перечисления можно сравнивать через ==, !=, <, <=, >, >=, <=>. Одно значение перечисления больше другого, если объявлено позже него.

Для перечисления можно указать целочисленный нижележащий тип. Значения типов перечисления будут занимать в памяти место, равное месту, занимаемому в памяти значениям нижележащего типа. Если нижележащий тип не указан явно, им будет выбран u8, u16 или u32 - в зависимости от количества членов перечисления.

Перечисления не могут быть пустыми, должно иметься хотя-бы одно значение. Перечисление должно иметь значений не больше, чем максимальное значение нижележащего типа.