Цикл while let
Цикл while let - это конструкция, которая объединяет
возможности цикла while и условного оператора
if let. Он выполняет блок кода до тех пор, пока
шаблон успешно сопоставляется со значением. Как только
сопоставление перестаёт быть успешным, цикл завершается.
Это удобно использовать для перебора значений из
итераторов, возвращающих Option, или для работы
с изменяемыми структурами данных.
Синтаксис
while let Some(x) = выражение
{
// тело цикла
}
Пример
Давайте рассмотрим простой пример использования
while let с вектором и методом pop,
который возвращает Option:
fn main()
{
let mut vec = vec![1, 2, 3, 4, 5];
while let Some(x) = vec.pop()
{
println!("{}", x);
}
}
Результат выполнения кода:
5
4
3
2
1
Пример
Давайте рассмотрим пример, в котором цикл
while let прерывается, когда значение
не соответствует шаблону:
fn main()
{
let mut vec = vec!["a", "b", "c", "d", "e"];
while let Some(s) = vec.pop()
{
if s == "c"
{
break;
}
println!("{}", s);
}
}
Результат выполнения кода:
"e"
"d"
Пример
Давайте рассмотрим пример, в котором цикл
while let используется для перебора
значений из итератора:
fn main()
{
let mut iter = "abcde".chars();
while let Some(ch) = iter.next()
{
println!("{}", ch);
}
}
Результат выполнения кода:
"a"
"b"
"c"
"d"
"e"