Enumerated types
An enumerated type is a nominal, heterogeneous disjoint union type, denoted
by the name of an enum
item. 1
An enum
item declares both the type and a number of variants, each of
which is independently named and has the syntax of a struct, tuple struct or
unit-like struct.
New instances of an enum
can be constructed in an enumeration variant
expression.
Any enum
value consumes as much memory as the largest variant for its
corresponding enum
type, as well as the size needed to store a discriminant.
Enum types cannot be denoted structurally as types, but must be denoted by
named reference to an enum
item.
The enum
type is analogous to a data
constructor declaration in
ML, or a pick ADT in Limbo.