녹 열거형

열거형은 유형의 변형을 열거하는 데 자주 사용됩니다.

열거형은 프로그램에 대한 정보를 컴파일러에 제공하여 프로그램을 보다 안정적으로 만들 수 있습니다.

간단한 예를 살펴보겠습니다.

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 사양을 사용하여 오류가 정상인지 치명적인지 구분할 수 있습니다.