Keyboard shortcuts

Press ← or → to navigate between chapters

Press S or / to search in the book

Press ? to show this help

Press Esc to hide this help

Выражения 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);
}
  • if let может быть лаконичнее, чем match. Например, когда нужно проверить только один вариант. Выражение match, напротив, требует проверки всех вариантов.
  • Типичным случаем использования является проверка на значение Some при работе с типом Option.
  • В отличие от выражения match, if let не позволяет использовать охранные выражения.
  • С веткой else это можно использовать как выражение.