Rust 열거형(Enum)

2023. 3. 20. 23:49Language/Rust

Enum(열거형)이란 한 타입의 종류(variant)를 나열 할 때 흔히 사용됩니다.

Enum은 컴파일러에 프로그램에 관한 정보를 제공하므로 프로그램을 더 안정적으로 만들 수 있습니다.

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

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"),
    }
}

enum Move안에 속한 값들을 열것값(variant)라고 부릅니다. 열것값들의 끝에는 콤마로 구분하고 마지막 열것값의 경우는 선택사항입니다.

열거형은 한번에 하나의 열것값만 될수 있고 match 키워드와 함께 사용하면 프로그램을 더 안정적으로 만들 수 있습니다.

Rust에서의 Enum Type

Rust에서의 enum은 타 언어와 다르게 보다 많은 기능을 사용 할 수 있습니다. Rust에서는 단순히 타입의 종류(variant)를 표시하는 것을 넘어 각 종류에 임의의 데이터를 지정 할 수 있습니다.

아래 예제를 살펴봅시다.


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을 추가 할 수 있는 것을 볼 수 있습니다.

또한 Error의 경우 ErroType을 지정하여 보통의 Error인지 크리티컬 한 에러인지도 구분하여 사용 할 수 있습니다.

'Language > Rust' 카테고리의 다른 글

Rust Option의 메서드 알아보기  (0) 2023.04.01
Rust 소스 코드 문서화  (0) 2023.03.21
Rust Struct(구조체)  (1) 2023.03.12
Rust 매크로  (0) 2023.03.11
Rust gRPC 사용하기  (0) 2023.03.06