카테고리 없음

Rust 열거형(Enum)과 match를 활용한 로직 구현

mystory55801 2025. 5. 28. 22:53

Rust 열거형(Enum)과 match를 활용한 로직 구현

Rust의 열거형(Enum)은 여러 가지 관련 상태나 값을 하나의 타입으로 표현할 수 있는 강력한 기능입니다. 특히 match 구문과 결합하면 안전하고 간결한 상태 처리 로직을 작성할 수 있습니다. 이번 글에서는 Rust 열거형과 match를 활용한 실제 로직 구현법을 자세히 살펴보겠습니다.

1. Rust 열거형 기본 개념

열거형은 enum 키워드로 선언하며, 각 변종(variant)은 서로 다른 값을 가질 수 있습니다. 예를 들어, 간단한 메시지 타입을 정의할 수 있습니다.


enum Message {
    Quit,
    Move { x: i32, y: i32 },
    Write(String),
    ChangeColor(i32, i32, i32),
}

2. match를 활용한 열거형 분기 처리

열거형 변종에 따라 다른 행동을 처리할 때는 match 구문을 사용합니다. 각 변종에 대응하는 코드를 작성할 수 있어 매우 명확합니다.


fn process_message(msg: Message) {
    match msg {
        Message::Quit => println!("프로그램 종료 요청"),
        Message::Move { x, y } => println!("이동 좌표: x={}, y={}", x, y),
        Message::Write(text) => println!("메시지 내용: {}", text),
        Message::ChangeColor(r, g, b) => {
            println!("색상 변경: R={}, G={}, B={}", r, g, b);
        }
    }
}

3. 열거형을 이용한 상태 관리 예제

열거형과 match를 활용하면 복잡한 상태 관리도 쉽게 구현할 수 있습니다. 예를 들어, 간단한 상태 머신을 만들어봅니다.


enum State {
    Start,
    Running,
    Stopped,
}

fn next_state(state: State) -> State {
    match state {
        State::Start => State::Running,
        State::Running => State::Stopped,
        State::Stopped => State::Start,
    }
}

fn main() {
    let mut state = State::Start;
    for _ in 0..5 {
        println!("현재 상태: {:?}", state);
        state = next_state(state);
    }
}

4. Option과 Result 열거형 활용

Rust 표준 라이브러리의 OptionResult도 열거형으로 구현되어 있으며, 패턴 매칭으로 안전하게 값을 처리합니다.


fn divide(dividend: f64, divisor: f64) -> Result {
    if divisor == 0.0 {
        Err(String::from("0으로 나눌 수 없습니다"))
    } else {
        Ok(dividend / divisor)
    }
}

fn main() {
    let result = divide(10.0, 2.0);

    match result {
        Ok(value) => println!("결과: {}", value),
        Err(e) => println!("오류 발생: {}", e),
    }
}

5. 결론: Rust 열거형과 match는 안전하고 직관적인 로직 구현의 열쇠

Rust의 열거형과 패턴 매칭은 복잡한 조건 분기를 깔끔하고 안전하게 처리할 수 있는 강력한 도구입니다. 이를 통해 상태 관리, 에러 처리, 다양한 데이터 구조 분해까지 효율적으로 구현할 수 있습니다.

Rust를 배우는 초보자도 열거형과 match를 반복해서 사용하며 익히면, 생산성과 코드 안정성을 크게 향상시킬 수 있습니다.