Rust 열거형 (Enum) 구조 분해 및 사용

Beginner

This tutorial is from open-source community. Access the source code

소개

이 실습에서는 Rust 에서 열거형 (enum) 의 사용법을 보여주는 코드를 제공합니다. match 문을 사용하여 열거형을 분해하고, 열거형 변형에 따라 연관된 값에 접근하는 방법을 포함합니다.

참고: 실습에서 파일 이름을 지정하지 않으면 원하는 파일 이름을 사용할 수 있습니다. 예를 들어 main.rs를 사용하고 rustc main.rs && ./main 명령어로 컴파일 및 실행할 수 있습니다.

열거형 (enums)

enum도 비슷하게 분해됩니다.

// 경고를 무시하기 위해 `allow` 가 필요합니다.
// 단 하나의 변형만 사용되기 때문입니다.
#[allow(dead_code)]
enum Color {
    // 이 3 가지는 이름만으로 지정됩니다.
    Red,
    Blue,
    Green,
    // 이들 역시 `u32` 튜플을 다른 이름 (색상 모델) 과 연결합니다.
    RGB(u32, u32, u32),
    HSV(u32, u32, u32),
    HSL(u32, u32, u32),
    CMY(u32, u32, u32),
    CMYK(u32, u32, u32, u32),
}

fn main() {
    let color = Color::RGB(122, 17, 40);
    // TODO ^ `color` 에 다른 변형을 시도해 보세요.

    println!("어떤 색상인가요?");
    // `enum` 은 `match` 를 사용하여 분해할 수 있습니다.
    match color {
        Color::Red   => println!("색상은 빨강입니다!"),
        Color::Blue  => println!("색상은 파랑입니다!"),
        Color::Green => println!("색상은 초록입니다!"),
        Color::RGB(r, g, b) =>
            println!("빨강: {}, 초록: {}, 파랑: {}!", r, g, b),
        Color::HSV(h, s, v) =>
            println!("색조: {}, 채도: {}, 명도: {}!", h, s, v),
        Color::HSL(h, s, l) =>
            println!("색조: {}, 채도: {}, 밝기: {}!", h, s, l),
        Color::CMY(c, m, y) =>
            println!("청록: {}, 마젠타: {}, 노랑: {}!", c, m, y),
        Color::CMYK(c, m, y, k) =>
            println!("청록: {}, 마젠타: {}, 노랑: {}, 검정: {}!",
                c, m, y, k),
        // 모든 변형을 검사했으므로 다른 분기는 필요하지 않습니다.
    }
}

요약

축하합니다! 열거형 (Enums) 실습을 완료했습니다. LabEx 에서 더 많은 실습을 통해 기술을 향상시킬 수 있습니다.