РЕПЕТИТОР математика физика информатика
Для школьников и студентов. Подтягивание пробелов. ЦЭ, ЦТ, ОГЭ, ЕГЭ.
Идет набор на ЛЕТО. Жмите для подробностей:)
648 of 1245 menu

Метод enumerate

Метод enumerate преобразует исходный итератор в итератор, элементами которого являются кортежи вида (index, value). Индекс начинается с нуля и увеличивается на единицу для каждого следующего элемента. Параметров метод не принимает. Метод возвращает новый итератор типа Enumerate, который лениво вычисляет индексы по мере обхода элементов.

Синтаксис

iter.enumerate()

Пример

Давайте пронумеруем элементы вектора vec!["a", "b", "c", "d", "e"] с помощью метода enumerate:

fn main() { let vec = vec!["a", "b", "c", "d", "e"]; for (index, value) in vec.iter().enumerate() { println!("{}: {}", index, value); } }

Результат выполнения кода:

0: a 1: b 2: c 3: d 4: e

Пример

Давайте соберём результат работы метода enumerate в новый вектор с помощью метода collect:

fn main() { let vec = vec![1, 2, 3, 4, 5]; let res: Vec<(usize, &i32)> = vec.iter().enumerate().collect(); println!("{:?}", res); }

Результат выполнения кода:

[(0, 1), (1, 2), (2, 3), (3, 4), (4, 5)]

Пример

Метод enumerate удобно комбинировать с методом filter, например, чтобы отобрать элементы по чётному индексу:

fn main() { let vec = vec!["a", "b", "c", "d", "e"]; let res: Vec<&str> = vec .iter() .enumerate() .filter(|(index, _)| index % 2 == 0) .map(|(_, value)| *value) .collect(); println!("{:?}", res); }

Результат выполнения кода:

["a", "c", "e"]

Смотрите также

  • класс Iterator,
    который представляет базовый интерфейс всех итераторов
  • метод map,
    который преобразует каждый элемент итератора
  • метод zip,
    который объединяет элементы двух итераторов в пары
  • метод collect,
    который собирает элементы итератора в коллекцию
Мы используем cookie для работы сайта, аналитики и персонализации. Обработка данных происходит согласно Политике конфиденциальности.
принять все настроить отклонить