enum은 열거 데이터(enumerate)를 정의하는 예약어다.
#[derive(Debug)]
enum Result {
Ok,
Err,
}
fn main() {
println!("{:?}", Result::Ok);
}
열거 데이터는 단일로 존재할 수 있지만, structure처럼 다른 값을 가질 수 있다. 형태도 structure와 비슷하다.
enum Result {
Ok(u32),
Err { code: u32, msg: String },
}
fn main() {
println!("{}", Result::Err { code: 404, msg: String::from("page not found") });
}
enum 값에 따라 조건부를 다는데는 match가 편하다. 다만 모든 enum 값에 대해 어떻게 처리해야하는지 명시해야한다. 만약 match에서 나열하지 않은 나머지 데이터는 _로 표기하면 된다.
enum Request {
Quit,
Message(String),
ChangeColor(u8, u8, u8),
Move {x: u8, y: u8},
Other1,
Other2,
}
fn process(req: Request) {
match req {
Request::Quit => {
// ...
}
Request::Message(msg) => {
// ...
}
Request::ChangeColor(r, g, b) => {
// ...
}
Request::Move {x, y} => {
// ...
}
_ => {
// ...
}
}
}
'Archive > Rust' 카테고리의 다른 글
[Rustlings] 9. collection (0) | 2021.05.25 |
---|---|
[Rustlings] 8. module (0) | 2021.05.22 |
[Rustlings] 6. struct (0) | 2021.05.16 |
[Rustlings] 5. Primitive Types (0) | 2021.05.15 |
[Rustlings] 4. Move Semantics (0) | 2021.05.14 |