enumerate
Вспомогательный метод enumerate даёт нам способ получить индекс каждого элемента для любого итератора.
// Copyright 2023 Google LLC
// SPDX-License-Identifier: Apache-2.0
fn main() {
let array = ['a', 'b', 'c', 'd', 'e'];
// По умолчанию перебор массива возвращает только его элементы.
for letter in array {
println!("The element is {letter:?}, but what's its index?");
}
// `enumerate` возвращает и элемент, и его индекс.
for (i, letter) in array.iter().enumerate() {
println!("{letter:?} has index {i}");
}
}
-
Особенность итераторов Rust и циклов
forв том, что итератор по умолчанию не даёт индекс каждого элемента. Это нормально, когда нужны, например, только значения массива, но при переборе часто нужен и индекс каждого элемента. -
enumerateсоздаёт итератор, который выдаёт кортеж, где первый элемент — индекс, а второй — элемент исходного итератора. -
Укажите, что в цикле
forдля переменной цикла можно использовать шаблон. Это позволяет деструктурировать кортеж, который выдаётenumerate. -
Обратите внимание, что сначала пришлось вызвать
.iter():enumerate— метод итератора, а не метод самого типа массива.