Keyboard shortcuts

Press ← or → to navigate between chapters

Press S or / to search in the book

Press ? to show this help

Press Esc to hide this help

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 — метод итератора, а не метод самого типа массива.