Операторы 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даёт синтаксический сахар для этого сценария. - Эту форму нельзя использовать как выражение, так как при ложном условии у неё может не быть значения.