Цикл for в Rust 1.75: подробное руководство
Цикл for в Rust: повторяем действия легко и просто
Что такое цикл и зачем он нужен?
Представь, что тебе нужно 10 раз написать на доске: «Я молодец!». Можно писать каждый раз заново, а можно сказать: «Повтори 10 раз: Я молодец!». В программировании за такие повторения отвечают циклы.
Цикл for — это самый удобный способ выполнить одно и то же действие несколько раз, когда ты точно знаешь, сколько раз это нужно сделать. Например: «выведи номер этажа 5 раз», «повтори фразу 3 раза», «сделай 10 упражнений».
Основной синтаксис цикла for в Rust
В Rust цикл for обычно работает с диапазоном чисел. Диапазон записывается так: start..end. Он включает start, но не включает end.
for переменная in начальное_значение..конечное_значение {
// код, который выполняется на каждом шаге
}
Разберём на простом примере:
fn main() {
// Выводим числа от 1 до 5
for число in 1..6 {
println!("Число: {}", число);
}
}
Результат работы программы:
Число: 1
Число: 2
Число: 3
Число: 4
Число: 5
Обрати внимание: мы написали 1..6, но программа вывела числа от 1 до 5. Последнее число (6) не входит в диапазон. Если нужно включить последнее число, используй ..=:
for число in 1..=5 {
println!("Число: {}", число);
}
// Выведет: 1, 2, 3, 4, 5
Как использовать переменную цикла
На каждом шаге цикла переменная (например, число) получает новое значение. Её можно использовать внутри цикла как обычную переменную.
fn main() {
println!("Считаем этажи:");
for этаж in 1..=10 {
println!("Едем на этаж №{}", этаж);
}
println!("Приехали!");
}
Решаем задачи, похожие на те, что ждут тебя
Задача «Лифт»
Лифт показывает каждый этаж, мимо которого проезжает. Нужно вывести все этажи от 0 до нужного.
use std::io;
fn main() {
println!("На какой этаж едем?");
let mut input = String::new();
io::stdin().read_line(&mut input).expect("Ошибка чтения");
let нужный_этаж: i32 = input.trim().parse().expect("Введите число");
println!("Лифт поехал:");
for этаж in 0..=нужный_этаж {
println!("Текущий этаж: {}", этаж);
}
println!("Двери открываются. Приехали!");
}
Задача «Банкомат»
Банкомат просит повторить фразу несколько раз. Пользователь вводит фразу и количество повторений.
use std::io;
fn main() {
println!("Введите фразу для повторения:");
let mut фраза = String::new();
io::stdin().read_line(&mut фраза).expect("Ошибка");
let фраза = фраза.trim();
println!("Сколько раз повторить?");
let mut число = String::new();
io::stdin().read_line(&mut число).expect("Ошибка");
let количество: i32 = число.trim().parse().expect("Введите число");
for раз in 1..=количество {
println!("{}. {}", раз, фраза);
}
println!("Подтверждено!");
}
Задача «Кибербезопасность»
Выводим отчёт о лечении вирусов. Каждый шаг — лечение одного файла.
use std::io;
fn main() {
println!("Сколько файлов заражено?");
let mut input = String::new();
io::stdin().read_line(&mut input).expect("Ошибка");
let файлы: i32 = input.trim().parse().expect("Введите число");
for номер in 1..=файлы {
println!("Лечу файл №{}... Вирус удалён!", номер);
}
println!("Компьютер здоров!");
}
Частые ошибки новичков
- Забывают фигурные скобки. В Rust тело цикла обязательно в
{}, даже если там одна команда. - Путают
..и..=.1..5— это 1,2,3,4 (пять не входит).1..=5— это 1,2,3,4,5. - Пытаются изменить переменную цикла. В Rust переменная цикла по умолчанию неизменяема. Не пиши
for mut i in ...без необходимости. - Путают типы. Если диапазон
1..10, то переменная цикла — целое число. Не пытайся записать в неё текст. - Забывают про
use std::io;. Для ввода данных с клавиатуры это обязательно.
Итоговый пример: «Раздача конфет на день рождения»
Представь, что ты принёс в класс 15 конфет и хочешь угостить каждого одноклассника по одной. Сколько одноклассников у тебя в классе? Программа спросит это число и раздаст конфеты.
use std::io;
fn main() {
println!("Сколько у тебя одноклассников?");
let mut input = String::new();
io::stdin().read_line(&mut input).expect("Ошибка чтения");
let одноклассников: i32 = input.trim().parse().expect("Введите число");
println!("Начинаем раздачу!");
for номер in 1..=одноклассников {
println!("Одноклассник №{} получает конфету! 🍬", номер);
}
println!("Все угощены! С днём рождения! 🎉");
}
Теперь ты знаешь главное о цикле for в Rust. Это твой верный помощник, когда нужно что-то повторить ровно столько раз, сколько ты укажешь. Пробуй, экспериментируй — и программирование станет простым и увлекательным!