Control Flow

if let 선택 기준

if let은 한 패턴만 중요할 때 match의 보일러플레이트를 줄인다. 대신 모든 경우를 검사해 주는 철저성은 직접 판단해야 한다.

한 갈래 처리 루트

route map
01

값을 본다

Option이나 enum 값이 어떤 배리언트인지 확인한다.

02

패턴이 맞으면 꺼낸다

Some(max)처럼 내부 값을 이름에 바인딩해 본문에서 쓴다.

03

나머지는 의도적으로 둔다

None이나 다른 배리언트가 중요하면 elsematch로 돌아간다.

선택 기준 매트릭스

compare matrix
상황
match
if let
여러 경우가 중요함
모든 갈래를 명시하고 철저성을 얻는다.
분기가 늘어나면 오히려 흐름이 흐려진다.
한 경우만 중요함
작동은 하지만 와일드카드 갈래가 잡음이 된다.
짧고 읽기 쉬운 제어 흐름이 된다.
나머지도 처리해야 함
각 경우의 의미를 분리하기 좋다.
else를 붙여 한 갈래와 나머지를 나눈다.

같은 의미의 두 표현

state board

match 버전

match config_max {
  Some(max) => println!("{max}"),
  _ => (),
}

철저하지만 관심 없는 갈래까지 적는다.

if let 버전

if let Some(max) = config_max {
  println!("{max}");
}

한 갈래에 집중하지만 무시되는 값은 의도적으로 남긴다.