Глава 5: Управление потоком выполнения

В этой главе курса по Rust мы изучаем, как управлять потоком выполнения программы. Вы узнаете, как работают конструкции if, else, оператор match для сопоставления с образцом, а также циклы loop, while и for. Всё сопровождается понятными примерами кода и объяснениями. 🚀

Apr 14, 2025

Условные конструкции

if / else

Оператор if позволяет выполнять код в зависимости от условия:
let number = 7; if number < 10 { println!("Меньше 10"); } else { println!("10 или больше"); }
Условия должны быть типа bool. Нельзя писать if number как в некоторых других языках — это часть строгой типизации Rust, которая помогает избежать логических ошибок и делает поведение программы предсказуемым:
if number { // Ошибка!
Также можно использовать if как выражение:
let condition = true; let value = if condition { 5 } else { 10 }; println!("{}", value); // 5

match

match — мощный инструмент сопоставления с образцом, аналог switch в других языках, но более гибкий. Особенно хорошо работает с перечислениями (enum):
enum Direction { Up, Down, Left, Right, } let dir = Direction::Left; match dir { Direction::Up => println!("Вверх"), Direction::Down => println!("Вниз"), Direction::Left => println!("Влево"), Direction::Right => println!("Вправо"), }
let number = 3; match number { 1 => println!("Один"), 2 | 3 => println!("Два или три"), 4..=6 => println!("От 4 до 6"), _ => println!("Что-то другое"), // `_` — это подстановочный шаблон (wildcard) }

Циклы

loop

Бесконечный цикл:
loop { println!("Цикл!"); break; // иначе будет бесконечно }
loop — единственный цикл в Rust, из которого можно напрямую возвращать значение:
let result = loop { break 42; }; println!("{}", result); // 42

while

Цикл с условием:
let mut number = 3; while number != 0 { println!("{}", number); number -= 1; }

for

Цикл по диапазону или коллекции:
for i in 1..=5 { // `..=` включает верхнюю границу диапазона println!("{}", i); } let arr = [10, 20, 30]; for val in arr { println!("{}", val); }

Итоги

🔹 if и else позволяют выполнять код в зависимости от условий.
🔹 match — мощная альтернатива switch, поддерживает диапазоны, шаблоны и переменные.
🔹 loop, while и for позволяют выполнять повторяющийся код разными способами.
В следующей главе мы рассмотрим функции и область видимости переменных. 🚀