列挙型(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),
}