if let

この if let を使うと、値がパターンに一致するかどうかに応じて異なるコードを実行できます:

// Copyright 2025 Google LLC
// SPDX-License-Identifier: Apache-2.0

use std::time::Duration;

fn sleep_for(secs: f32) {
    let result = Duration::try_from_secs_f32(secs);

    if let Ok(duration) = result {
        std::thread::sleep(duration);
        println!("slept for {duration:?}");
    }
}

fn main() {
    sleep_for(-10.0);
    sleep_for(0.8);
}
  • match とは異なり、if let はすべての分岐を網羅する必要はありません。そのため、 match よりも簡潔に書ける場合があります。
  • よくある使い方は、Option を扱う際に Some の値を処理することです。
  • match とは異なり、if let はパターンマッチングのガード節をサポートしていません。
  • else 節と組み合わせると、式として使用できます。