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

Операторы while let

Аналогично if let существует while let, который многократно проверяет значение на соответствие шаблону:

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

fn main() {
    let mut name = String::from("Comprehensive Rust 🦀");
    while let Some(c) = name.pop() {
        dbg!(c);
    }
    // (Есть более эффективные способы развернуть строку!)
}

Здесь String::pop возвращает Some(c), пока строка не опустеет, после чего вернёт None. Цикл while let позволяет последовательно перебрать все элементы.

  • Уточните, что циклы while let продолжаются, пока значение соответствует шаблону.
  • Цикл while let можно переписать как бесконечный цикл с оператором if, который прерывается, когда для name.pop() нет значения для распаковки. while let даёт синтаксический сахар для этого сценария.
  • Эту форму нельзя использовать как выражение, так как при ложном условии у неё может не быть значения.