問題一覧に戻る
中級データ構造
問題48: 列挙型(enum)
enumは複数のバリアントから一つを選ぶ型で、各バリアントは異なるデータを持てます。シンプルな状態を表現したり、異なる種類のデータを一つの型で扱えます。match文で全バリアントを網羅的に処理する必要があり、これにより安全性が保証されます。Rustの型システムの中でも特に強力な機能です。
// 列挙型を定義
Status {
Active,
Inactive,
}
// データを持つ列挙型
Message {
Text(),
Number(),
Quit,
}
fn main() {
// 列挙型を使用
let status = Status::;
// 列挙型のマッチング
match status {
Status::Active => println!("Active"),
Status:: => println!("Inactive"),
}
// データを持つ列挙型
let msg = Message::Text("Hello".to_string());
match msg {
Message::Text(s) => println!("Text: {}", s),
Message::(n) => println!("Number: {}", n),
Message:: => println!("Quit"),
}
}