← 解説「if let — 1パターンだけの照合」に戻る
サンプルコードで身につける: if let — 1パターンだけの照合
解説で学んだ概念を、5つの具体例で確認します。素朴な例から実務寄りの例へと進みます。
1最小の if let
「Text バリアントのときだけ中身を表示する」を if let で書いた最小例です。パターンに一致すればブロックが実行され、一致しなければ何も起きずに次へ進みます。match と違って他のバリアントの分岐を書かなくてよいのがポイントです。
Rust
2else で「一致しなかったとき」を書く
if let に else を付けると「そのバリアントだったとき/それ以外」の2分岐になります。バリアントが2種類しかない enum なら、match とほぼ同じ表現力をより短く書けます。オンライン/オフラインのような二値+データの状態表示にちょうどよい形です。
Rust
3取り出した値で計算する
if let で束縛した変数はブロック内で普通の値として使えるので、そのまま計算に回せます。この例では割引率を取り出して価格計算に使い、無効なクーポンは else で弾いています。「使える場合だけ値を取り出して処理する」は割引・設定値・キャッシュなど実務のあちこちで出てくる形です。
Rust
4ループの中で特定バリアントだけ拾う
ログの配列を for で回し、Error バリアントだけを if let で拾い出す例です。「他のバリアントは無視してよい」というif let の性質が、フィルタリングと素直に噛み合います。大量のイベント列から関心のある種類だけ処理するのは、監視やログ集計の実務で頻出のパターンです。
Rust
5設定値の上書きを if let で表す
「個別に指定があればその値、なければ既定値」という設定読み込みの定番処理を if let + else で表した実務寄りの例です。構造体のフィールドに入った enum へも &config.timeout のようにそのままパターンを当てられます。後のレッスンで学ぶ Option<T> も、まさにこの形で if let とよく組み合わされます。
Rust