Уроки модуля (1/2)
Условные выражения и циклы
Поток управления в Rust вращается вокруг двух основных конструкций: условных выражений, позволяющих решить, какой путь выполнения выбрать, и конструкций цикла для повторения инструкций.
Условные обозначения: if как выражение
В Rust оператор if является выражением, то есть возвращает значение. Мы можем использовать if, чтобы напрямую присвоить значение переменной:
let condition = true;
let number = if condition { 5 } else { 6 }; // if/else as an expressionЦиклы и итерации
Rust предоставляет три типа собственных циклов: loop, while и for.
1. loop (бесконечный цикл)
Ключевое слово loop создает бесконечный цикл, который продолжается до тех пор, пока вы явно не скажете ему прекратить использование break:
let mut count = 0;
loop {
count += 1;
if count == 10 {
break; // Exit the loop
}
}Кроме того, вы можете вернуть значение из loop, поместив его сразу после break:
let result = loop {
count += 1;
if count == 10 {
break count * 2; // Returns 20
}
};2. while (условный цикл)
Запускает блок кода, пока логическое условие остается истинным:
let mut number = 3;
while number != 0 {
println!("{}!", number);
number -= 1;
}3. for (Итерация по коллекциям и диапазонам)
Цикл for — наиболее распространенный и безопасный инструмент для перебора элементов коллекции или диапазона чисел:
// Iterates over numbers 1 through 3 (excluding 4)
for number in 1..4 {
println!("Valore: {}", number);
}
// Iterates including the right boundary using '='
for number in 1..=3 {
println!("Valore: {}", number); // Prints 1, 2 and 3
}Этикетки циклов
При работе с вложенными циклами операторы break и continue по умолчанию применяются к самому внутреннему циклу. Rust позволяет вам использовать метку цикла (записанную как 'label_name:) для явного завершения или продолжения внешнего цикла:
let mut count = 0;
'outer: loop {
loop {
if count == 5 {
break 'outer; // Exits the outer loop directly
}
count += 1;
}
}Попробуйте сами
Объявите переменную с именем Number со значением 7. Затем используйте выражение if/else, чтобы присвоить переменной message значение «больше», если число больше 5, или «меньше» в противном случае. Наконец, напечатайте сообщение, используя println!.
Показать подсказку
Напишите `let message = if Number > 5 { 'greater' } else { 'smaller' };` и передайте его `println!`.
Решение доступно после 3 попыток
Напишите цикл for, который печатает числа от 1 до 5 включительно (т. е. 1, 2, 3, 4, 5), используя println! на каждой итерации.
Показать подсказку
Используйте синтаксис включающего диапазона `for i in 1..=5` и запустите `println!('{}', i);` внутри блока.
Решение доступно после 3 попыток
Напишите цикл, который увеличивает счетчик изменяемой переменной, начиная с 0. Когда счетчик достигает 10, выйдите из цикла, возвращая счетчик, умноженный на 5, с помощью оператора Break, чтобы присвоить это значение результату неизменяемой переменной. Наконец, распечатайте результат.
Показать подсказку
Используйте `let result = цикл { ... };`. Внутри цикла увеличьте `counter` и добавьте условие `if counter == 10 {break counter * 5; }`.
Решение доступно после 3 попыток