열거형은 유형의 변형을 열거하는 데 자주 사용됩니다.
열거형은 프로그램에 대한 정보를 컴파일러에 제공하여 프로그램을 보다 안정적으로 만들 수 있습니다.
간단한 예를 살펴보겠습니다.
enum Move {
Up,
Down,
Left,
Right
}
fn which_move(go: Move){
match go {
Move::Up => println!("up"),
Move::Down => println!("down"),
Move::Left => println!("left"),
Move::Right => println!("right"),
}
}
열거형 이동에 속하는 값을 변종이라고 합니다. 문자열의 끝은 쉼표로 구분되며 마지막 문자열은 선택 사항입니다.
열거형은 한 번에 하나의 열거형 값만 가질 수 있으며 프로그램을 보다 안정적으로 만들기 위해 일치 키워드와 함께 사용할 수 있습니다.
Rust의 열거형
다른 언어와 달리 Rust의 열거형은 더 많은 기능을 사용할 수 있습니다. Rust는 단순히 유형의 변형 이름을 지정하는 것 이상이며 모든 데이터를 모든 변형에 할당할 수 있습니다.
아래 예를 살펴보겠습니다.
enum ErrorType{
Normal,
Critical
}
enum LogType {
Info(String),
Warning(String),
Error(ErrorType, String)
}
fn inspect(log:LogType)
{
match log{
LogType::Info(x) => println!("{}", x),
LogType::Warning(x) => println!("{}", x),
LogType::Error(error_type, x)=>
{
match error_type {
ErrorType::Normal => println!("normal error {}", x),
ErrorType::Critical => println!("critical error {}", x)
}
}
}
}
fn main() {
let test = LogType::Error(ErrorType::Critical, String::from("An error occurred!"));
inspect(test);
}
LogType을 보면 Info, Warning 및 Error 열 값에 String을 추가할 수 있음을 알 수 있습니다.
또한 오류가 발생한 경우 ErroType 사양을 사용하여 오류가 정상인지 치명적인지 구분할 수 있습니다.