列挙型(enum)は、特定の型の一連の値、または異なる型の一連の値を定義した型
enum DogKind {
AKITAINU,
SHIBAINU,
RETRIVER,
}
enum DogKind { AKITAINU, SHIBAINU, RETRIEVER, } fn main() { let dog1 = DogKind::AKITAINU; let dog2 = DogKind::SHIBAINU; match dog1 { DogKind::AKITAINU => println!("秋田犬"), DogKind::SHIBAINU => println!("柴犬"), DogKind::RETRIVER => println!("レトリバー"), } match dog2 { DogKind::AKITAINU => println!("秋田犬"), DogKind::SHIBAINU => println!("柴犬"), DogKind::RETRIVER => println!("レトリバー"), } }
列挙子に種類の異なる型を指定したり、複数の値を持つように指定したりすることができる
enum Command { Quit, Move { x: i32, y: i32 }, Write(String), SetColor(i32, i32, i32) } fn main(){ let cmnds = vec![ Command::Quit, Command::Move { x: 20, y: 30}, Command::Write(String::from("Hello")), Command::SetColor {0:127, 1:127, 2:127} ]; for cmd in cmnds.iter(){ match cmd { Command::Quit => println!("Quit"), Command::Move{x, y} => println!("Move {},{}", x, y), _ => println!("その他のコマンド"), } } }
enum Option<T>{ Some(T), None, } enum Result<T, E>{ Ok(T), Err(E), }