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

Метод next

Метод next возвращает следующий элемент итератора. Он является основным методом трейта Iterator и возвращает значение типа Option<T>: вариант Some с очередным элементом, если он есть, или None, когда итератор исчерпан. Параметров метод не принимает, но принимает изменяемую ссылку на самого себя, поэтому итератор должен быть объявлен как mut.

Синтаксис

iterator.next()

Пример

Давайте получим первый элемент итератора из вектора vec![1, 2, 3, 4, 5]:

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

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

Some(1)

Пример

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

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

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

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

Пример

Давайте вызовем next больше раз, чем элементов в итераторе, и посмотрим, что вернётся после его исчерпания:

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

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

Some(1) Some(2) None

Пример

Давайте используем next для обхода итератора в цикле while let и выведем все элементы строк:

fn main() { let mut iter = vec!["a", "b", "c", "d", "e"].into_iter(); while let Some(item) = iter.next() { println!("{}", item); } }

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

"a" "b" "c" "d" "e"

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

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