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

Метод chain

Метод chain класса Iterator объединяет текущий итератор с другим итератором в один новый итератор. Сначала перебираются все элементы первого итератора, а затем все элементы второго. Параметром метод принимает второй итератор, элементы которого нужно добавить после элементов текущего итератора.

Метод возвращает новый итератор типа Chain, который реализует трейт Iterator и лениво перебирает элементы обоих итераторов по очереди.

Синтаксис

iterator.chain(other)

Пример

Давайте объединим два вектора с числами vec![1, 2, 3] и vec![4, 5]:

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

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

[1, 2, 3, 4, 5]

Пример

Давайте объединим две строки "abcde" и "12345" и выведем каждый символ по отдельности:

fn main() { let first = "abcde"; let second = "12345"; for ch in first.chars().chain(second.chars()) { println!("{}", ch); } }

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

"a" "b" "c" "d" "e" "1" "2" "3" "4" "5"

Пример

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

fn main() { let a = vec![1, 2, 3]; let b = vec![4, 5]; let c = vec![6, 7, 8]; let res: Vec<i32> = a.iter() .chain(b.iter()) .chain(c.iter()) .copied() .collect(); println!("{:?}", res); }

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

[1, 2, 3, 4, 5, 6, 7, 8]

Пример

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

fn main() { let nums = vec![1, 2, 3]; let res: Vec<i32> = nums.iter() .chain(std::iter::empty()) .copied() .collect(); println!("{:?}", res); }

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

[1, 2, 3]

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

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