Rust 매치 가드 사용법

Beginner

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

소개

이 실습에서는 Rust 에서 매치 가드를 사용하여 조건에 따라 분기 (arm) 를 필터링하는 방법을 배웁니다. 매치 가드는 패턴 뒤에 추가되며, if 키워드와 조건으로 표현됩니다. 가드 조건은 패턴 일치를 더욱 세분화하고 매치 표현식의 해당 분기를 실행하기 전에 추가적인 검사를 수행할 수 있도록 합니다. 그러나 컴파일러는 패턴 커버리지 검사 시 가드 조건을 고려하지 않으므로 매치 표현식이 여전히 모든 패턴을 커버하는지 확인해야 합니다.

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

가드

match 가드를 추가하여 분기를 필터링할 수 있습니다.

#[allow(dead_code)]
enum Temperature {
    Celsius(i32),
    Fahrenheit(i32),
}

fn main() {
    let temperature = Temperature::Celsius(35);
    // ^ TODO `temperature` 의 다른 값을 시도해 보세요.

    match temperature {
        Temperature::Celsius(t) if t > 30 => println!("{}C 는 30 도 이상입니다", t),
        // ^ `if 조건` 부분이 가드입니다.
        Temperature::Celsius(t) => println!("{}C 는 30 도 미만입니다", t),

        Temperature::Fahrenheit(t) if t > 86 => println!("{}F 는 86 도 이상입니다", t),
        Temperature::Fahrenheit(t) => println!("{}F 는 86 도 미만입니다", t),
    }
}

컴파일러는 모든 패턴이 매치 표현식에 의해 커버되는지 확인할 때 가드 조건을 고려하지 않습니다.

fn main() {
    let number: u8 = 4;

    match number {
        i if i == 0 => println!("Zero"),
        i if i > 0 => println!("Zero 보다 큽니다"),
        // _ => unreachable!("Should never happen."),
        // TODO ^ 컴파일 오류를 해결하려면 주석을 해제하세요.
    }
}

요약

축하합니다! 가드 실습을 완료했습니다. LabEx 에서 더 많은 실습을 통해 기술을 향상시킬 수 있습니다.