1最小の enum
信号の色という「3種類のどれか1つ」を enum で表した最小例です。Signal::Red のように「型名::バリアント名」で値を作り、#[derive(Debug)] を付けておけば {:?} でバリアント名を表示できます。まずは「列挙した値しか存在できない型」という感覚をつかんでください。
Rust
2関数から enum を返す
点数に応じて Grade のどれかを返す関数の例です。戻り値が enum なら、呼び出し側が受け取る値は必ず A・B・C のいずれかで、「想定外の文字列が返ってくる」事態が型レベルで起きません。判定結果や分類結果を返す関数は、実務でもまず enum を戻り値にできないか考えます。
Rust
3構造体のフィールドに enum を持たせる
タスクの状態を String ではなく enum のフィールドで持つ例です。"todo" のような文字列フラグと違い、タイプミスした状態や未知の状態が混入する余地がありません。「データ本体は struct、状態は enum フィールド」という組み合わせは実務のモデリングの定番です。
Rust
4enum の値を配列に入れて回す
enum の値も i32 などと同じ「普通の値」なので、配列に入れて for で回せます。この例は注文状態の遷移履歴を配列で持ち、順に表示しています。状態の履歴やイベント列を「enum の並び」として持つのは、ログや業務フローの記録で実際によく使う形です。
Rust
5HTTPメソッドを enum で表す
Web 開発で頻出の「リクエストの種類」を enum にした実務寄りの例です。文字列の "GET" で持つと "get" や "GETT" が紛れ込めますが、enum なら定義した3種類以外は存在できません。enum のフィールドを持つ struct と組み合わせて、リクエストというデータを安全に表現しています。
Rust