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

Метод flatten

Метод flatten преобразует итератор, элементы которого сами являются итераторами, в один плоский итератор. Он последовательно проходит по каждому вложенному итератору и возвращает его элементы по одному. Метод не принимает параметров и возвращает новый итератор типа Flatten.

Метод особенно удобен, когда нужно обработать коллекцию коллекций как единую последовательность элементов.

Синтаксис

iter.flatten()

Пример

Давайте развернем вектор векторов в один плоский итератор и соберем результат в новый вектор:

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

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

[1, 2, 3, 4, 5]

Пример

Давайте развернем вектор строк в итератор отдельных символов:

fn main() { let words = vec!["abcde", "12345"]; let res: Vec<char> = words.into_iter().flatten().collect(); println!("{:?}", res); }

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

['a', 'b', 'c', 'd', 'e', '1', '2', '3', '4', '5']

Пример

Давайте используем flatten вместе с map, чтобы развернуть результаты преобразования каждого элемента:

fn main() { let nums = vec![1, 2, 3]; let res: Vec<i32> = nums .into_iter() .map(|x| vec![x, x * 10]) .flatten() .collect(); println!("{:?}", res); }

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

[1, 10, 2, 20, 3, 30]

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

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