매치 가드
match
갈래 필터링에 **가드(guard)**를 추가할 수 있습니다.
fn main() { let pair = (2, -2); // TODO ^ `pair`에 다른 값을 설정해 보세요 println!("{:?}를 설명합니다", pair); match pair { (x, y) if x == y => println!("둘이 서로 같습니다"), // 여기 ^ `if 조건문` 부분이 매치 가드입니다 (x, y) if x + y == 0 => println!("둘은 상반 관계입니다!"), (x, _) if x % 2 == 1 => println!("첫 번째 값은 홀수입니다"), _ => println!("서로 상관없는 값이네요..."), } }
단, 컴파일러는 표현식의 모든 가능성이
검사되었는지 임의로 평가하지 않습니다.
따라서 마지막에 _
패턴을 반드시 사용해야 합니다.
fn main() { let number: u8 = 4; match number { i if i == 0 => println!("0"), i if i > 0 => println!("0보다 큼"), _ => println!("그냥 통과"), // 이 부분은 도달할 수 없어야 합니다 } }