패턴과 매칭

패턴 (pattern) 은 복잡하거나 단순한 타입의 구조와 매칭을 위한 러스트의 특수 문법입니다. 패턴을 match 표현 및 기타 구문과 함께 사용하면 프로그램 흐름을 더 잘 제어할 수 있습니다. 패턴은 다음의 조합으로 구성됩니다:

  • 리터럴 값 (literals)
  • 분해한 (destructured) 배열, 열거형, 구조체, 튜플
  • 변수
  • 와일드카드 (wildcard)
  • 자리표시자 (placeholder)

몇 가지 예제 패턴에는 x, (a, 3), Some(Color::Red) 같은 것들이 있습니다. 패턴이 유효한 컨텍스트 내에서 이러한 구성 요소들은 데이터의 형태를 설명합니다. 그러면 프로그램은 값들을 패턴에 매칭해 보고 특정 코드 조각을 계속 실행하기에 데이터가 올바른 형태인지 확인합니다.

패턴을 이용하기 위해서는 그 패턴을 어떤 값에 비교합니다. 패턴이 값에 매칭된다면 코드에서 값 부분을 사용합니다. 6장에서 동전 계수기 예제와 같이 패턴을 사용했던 match 표현식을 떠올려 봅시다. 값이 패턴의 형태에 들어맞는다면 명명된 부분을 사용할 수 있습니다. 그렇지 않다면 해당 패턴과 관련된 코드는 실행되지 않습니다.

이번 장은 패턴과 관련된 모든 것에 대한 참고 자료입니다. 패턴을 사용할 수 있는 유효한 위치, 반박 가능한 패턴 (refutable patterns)반박 불가능한 패턴 (irrefutable patterns) 의 차이점, 여러분이 접해볼 수 있는 다양한 종류의 패턴 문법에 대해서 다뤄보겠습니다. 이번 장을 마치고 나면 패턴을 이용해 다양한 개념을 명확하게 표현하는 방법에 대해 알게 될 것입니다.