Тип обхода в Rust
У стандартного обхода коллекции связанный тип элемента уже задан в библиотеке. Его не подставляют в своем коде: достаточно взять обход и смотреть, что приходит в переменную цикла.
Создадим обход по срезу чисел и выведем каждое значение:
fn main() {
let nums = [1, 2, 3];
let it = nums.iter();
for n in it {
println!("{}", n);
}
}
Здесь n имеет тип &i32: обход
по срезу выдает ссылки на элементы, а не
копии чисел. Если нужны владельные значения,
берут другой способ обхода, но связанный
тип по-прежнему виден по переменной в цикле.
Тот же срез можно обойти сразу без отдельной переменной для обхода:
fn main() {
let nums = [1, 2, 3];
for n in nums.iter() {
println!("{}", n);
}
}
Дан срез:
let words = ["a", "b"];
Запишите цикл по обходу среза и назовите тип переменной цикла.
Дан следующий код:
let data = [4, 5, 6];
Сохраните обход в переменную, пройдите циклом и выведите три числа. Укажите, ссылка это или копия в переменной цикла.
Скажите, зачем смотреть на тип переменной в цикле, если описание стандартного обхода в документации еще не разбирали.