Заимствование в цикле
Часть раздела Fundamentals путешествия по Rust на Coddy — урок 67 из 75.
Когда мы пишем цикл в Rust, у нас есть два основных способа работы с данными: мы можем просматривать их (используя &) или забирать их. Например, рассмотрим следующие данные:
let numbers = vec![1, 2, 3, 4, 5];
let mut sum = 0;Способ 1: Просмотр данных (используя &):
for number in &numbers {
sum += number;
}
println!("I can use it here: {:?}", numbers);Способ 2: Получение данных (без &):
for number in numbers {
sum += number;
}
// println!("Can't use {:?} anymore!", numbers);
// Это приведет к ошибкеПредставьте это так:
- Использование
&похоже на просмотр фотоальбома: вы можете видеть все фотографии, но сам альбом остается нетронутым
- Не использовать
&— это все равно что вынимать фотографии: вы можете ими пользоваться, но после этого альбом останется пустым
Теперь этот стиль:
for num in numbers.iter() {}Это аналогично следующему:
for num in &numbers {}И цикл с изменением:
for num in numbers.iter_mut() {
*num *= 2;
}Это также можно записать так:
for num in &mut numbers {
*num *= 2;
}Шпаргалка
В циклах Rust вы можете либо просматривать данные (используя &), либо забирать владение ими:
Просмотр данных (заимствование):
let numbers = vec![1, 2, 3, 4, 5];
for number in &numbers {
sum += number;
}
// numbers всё ещё можно использовать после циклаПолучение владения:
let numbers = vec![1, 2, 3, 4, 5];
for number in numbers {
sum += number;
}
// numbers нельзя использовать после циклаМетоды итератора:
// Эти варианты эквивалентны:
for num in numbers.iter() {}
for num in &numbers {}
// Для изменения:
for num in numbers.iter_mut() { *num *= 2; }
for num in &mut numbers { *num *= 2; }Попробуйте сами
В этом уроке нет задания по программированию.
В этом уроке есть небольшой тест. Начните урок, чтобы ответить на вопросы и сохранить прогресс.
Все уроки раздела Fundamentals
4Операторы. Часть 1
Арифметические операторыОператор остатка от деленияАрифметические сокращенияОператоры сравненияСравнение строк7Основы ввода-вывода
Вывод в консольЧтение ввода пользователяПовторение — До 120Повторение — True или False5Операторы. Часть 2
Логические операторы. Часть 1Логические операторы. Часть 2Повторение — простая логикаЛогические операторы. Часть 38Приложение-калькулятор
Приветственное сообщениеПолучение чисел11Функции
Объявление функцийПараметры и аргументыВозвращаемые значенияМножественные возвращаемые значенияПовторение: функция SigmaПовторение: функция валидации14Итерация по массивам
Работа с диапазонамиУлучшенный цикл forЗаимствование в циклеОсновные операции с массивами3Переменные. Часть 2
Объявление типаСоглашения об именованииВывод типовПовторение: инициализация переменныхПриведение типов9Циклы
Цикл For по последовательностиЦикл WhileОператор BreakОператор ContinueВложенные циклыМетки цикловБесконечный циклПовторение — Динамический ввод