가드
매치 팔(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 ^ 컴파일을 수정하려면 주석을 해제하세요
}
}