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

Метод fuse

Метод fuse создаёт новый итератор, который после того, как исходный итератор вернёт None хотя бы один раз, всегда будет возвращать None при последующих вызовах метода next. Это полезно, когда исходный итератор после возврата None может снова начать возвращать значения Some - что нарушает контракт итераторов. Метод не принимает параметров и возвращает новый итератор типа Fuse.

Синтаксис

iter.fuse()

Пример

Давайте создадим вектор и получим из него итератор, затем обернём его в fuse и несколько раз вызовем метод next:

fn main() { let v = vec![1, 2, 3]; let mut iter = v.iter().fuse(); println!("{:?}", iter.next()); println!("{:?}", iter.next()); println!("{:?}", iter.next()); println!("{:?}", iter.next()); println!("{:?}", iter.next()); }

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

Some(1) Some(2) Some(3) None None

Пример

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

fn main() { let v = vec![10, 20, 30]; let res: Vec<i32> = v.iter().fuse().cloned().collect(); println!("{:?}", res); }

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

[10, 20, 30]

Пример

Давайте посчитаем количество элементов итератора, обёрнутого в fuse, с помощью метода count:

fn main() { let v = vec!["a", "b", "c", "d", "e"]; let res = v.iter().fuse().count(); println!("{}", res); }

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

5

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

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