[Chapter #2.2] `Result`로 입력 실패 다루기

이번엔 `Result`로 입력 실패 다루기 / `parse`와 타입 변환 쪽을 봅니다. 추리 게임을 만들기 시작하면 입력을 받고 결과를 보여 주는 흐름부터 잡게 됩니다. 기능을 한꺼번에 넣으면 어디서 꼬였는지 찾기 힘들어서, 이번에는 실행되는 최소 단위만 남겨 봅니다.

입력이 깨지는 지점

여기서는 결과가 멋지게 보이는 것보다 입력부터 출력까지 한 바퀴 도는지가 더 중요합니다. 막히면 코드를 늘리기 전에 마지막으로 확인된 값을 먼저 봅니다.

let guess: u32 = match input.trim().parse() {
    Ok(value) => value,
    Err(_) => 0,
};

직접 확인할 부분

  • parse가 실패할 수 있다는 점을 코드에 남긴다
  • Err를 무시하지 않고 다음 흐름을 정한다
  • 입력 타입과 비교하는 값의 타입을 맞춘다

입력 실패를 값으로 다룰 수 있으면 프로그램을 무조건 믿고 진행할 필요가 없습니다.

이제 게임이 돌아갈 뼈대는 생겼습니다. 다음부터는 입력이 이상할 때 프로그램이 어떻게 반응하는지 보겠습니다.