Keyboard shortcuts

Press or to navigate between chapters

Press S or / to search in the book

Press ? to show this help

Press Esc to hide this help

가드

매치 팔(arm)을 필터링하기 위해 match _가드(guard)_를 추가할 수 있습니다.

#[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!("0"),
        i if i > 0 => println!("0보다 큼"),
        // _ => unreachable!("절대 일어날 수 없는 일입니다."),
// TODO ^ 컴파일을 수정하려면 주석을 해제하세요
    }
}

참고:

튜플 열거형