refutability

실패 가능 패턴

`let`, 함수 매개변수, `for`는 반드시 성공해야 하고, `if let`과 `while let`은 실패를 조건 흐름으로 다룬다.

irrefutable

항상 맞는 패턴

모든 입력값에 대해 바인딩이 가능하므로 실패 처리가 필요 없다.

let x = 5;
let (a, b) = pair;
refutable

실패할 수 있는 패턴

일부 값이 빠지므로 맞지 않을 때 무엇을 할지 문법에 드러나야 한다.

Some(x)
Ok(age)
오류

`let Some(x)`

`None`일 때 진행할 방법이 없으므로 컴파일러가 막는다.

해결

`if let Some(x)`

맞으면 실행하고, 아니면 블록을 건너뛴다.

해결

`let else`

맞지 않는 경우의 탈출 코드를 명시한다.