パターンとマッチング
パターンはRustにおける特別な構文であり、複雑な型にも単純な型にも、その構造に対してマッチさせるために使います。パターンを match 式やその他の構文と組み合わせて使うことで、プログラムの制御フローをより細かく制御できます。パターンは、以下の要素をいくつか組み合わせて構成されます。
- リテラル
- 分解された配列、列挙型、構造体、またはタプル
- 変数
- ワイルドカード
- プレースホルダー
パターンの例としては x、(a, 3)、Some(Color::Red) などがあります。パターンが有効な文脈では、これらの構成要素はデータの形を表します。するとプログラムは値をパターンに照らしてマッチさせ、特定のコード片の実行を続けるために、正しいデータの形をしているかどうかを判定します。
パターンを使うには、それを何らかの値と比較します。パターンがその値にマッチした場合、値の各部分をコード内で使用します。第6章で、コイン仕分け機の例など、パターンを使った match 式を見たことを思い出してください。値がパターンの形に合っていれば、名前の付いた各部分を使えます。そうでなければ、そのパターンに対応するコードは実行されません。
この章では、パターンに関するあらゆる事柄を参照的に扱います。パターンを使用できる有効な場所、失敗しうるパターンと失敗しえないパターンの違い、そして目にするかもしれないさまざまな種類のパターン構文を取り上げます。この章を終える頃には、多くの概念を明快に表現するために、パターンをどう使えばよいかがわかるでしょう。