データを持つ列挙型
enum
は一個もしくは複数な型のデータを持つことができ、C言語の union
の様な表現ができます。
match
を用いて列挙値に対するパターンマッチングを行う際、各データを変数名に束縛することができます。
列挙
のメモリ事情:
- 列挙型のメモリサイズはそれが持つ最大要素のサイズと等しい。これにより全ての代入可能な値が同じサイズのメモリ空間を利用することを可能にします。
- 要素の型以外に、各要素には数字値がついており、どのタグであるかについて示しています。
その他の事情:
- Rust の
列挙
は tagged-union とも言われています。
- 複数の型を組み合わせて新しい型を作ることができます。 これが Rust には algebraic types を持つと言われる理由です。