이 문서는 2판 번역본입니다.

최신 2021 에디션 문서는 https://doc.rust-kr.org 에서 확인하실 수 있습니다.

패턴과 매칭

패턴은 단순하거나 복잡한 타입의 구조에 값들을 비교하기 위한 러스트의 특별한 문법입니다. 패턴을 match 표현 및 다른 구문들과 함께 사용하면 프로그램 흐름을 더 많이 제어할 수 있습니다. 패턴은 다음의 조합으로 이루어집니다:

  • 리터럴 값(Literals)
  • 분해한 배열(Array), 열거형(Enum), 구조체(Struct), 튜플(Tuple)
  • 변수(Variable)
  • 와일드카드(Wildcard)
  • 임시 값(Placeholders)

이들은 프로그램이 처리 할 자료들의 형태를 나타냅니다. 자료들을 이 구조들에 대응시키고, 대응 시킨 자료를 값들과 비교하여 특정 구간의 코드가 실행 될 수 있는지 판단할 수 있게 됩니다.

패턴을 이용하기 위해선 그 패턴을 어떠한 값에 비교해야 합니다. 만일 패턴이 값에 대응된다면 그 값에 해당되는 부분을 코드상에서 이용하게 됩니다. 6장의 match 표현 예제, 동전 계수기 예제를 떠올려 봅시다. 값이 패턴의 형태에 들어맞는다면 패턴이 정한 이름들로 값들을 이용할 수 있었습니다. 형태가 다르다면 해당 패턴과 관련된 코드는 실행 되지 않았습니다.

이번 장은 패턴과 관련된 모든 것의 레퍼런스입니다. 어느 곳에서 패턴을 사용할 수 있는지와, 반증 가능 패턴(refutable patterns)반증 불가 패턴(irrefutable patterns) 의 차이, 여러분이 접해볼 수 있는 다양한 종류의 패턴 문법에 대해서 다룹니다. 이번 장을 마치고 나면 패턴을 이용해 다양한 개념을 명확하게 표현하는 방법에 대해 알게 될 것입니다.