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

Адаптер Peekable

Адаптер Peekable оборачивает исходный итератор и даёт возможность посмотреть на следующий элемент без его извлечения. Он создаётся методом peekable, который принимает итератор и возвращает структуру Peekable. У этой структуры есть метод peek, возвращающий ссылку на следующий элемент в виде Option, и метод next, который извлекает следующий элемент, как у обычного итератора.

Синтаксис

iter.peekable() peekable.peek() peekable.next()

Пример

Давайте создадим итератор из вектора и заглянем в его первый элемент с помощью peek:

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

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

Some(1)

Пример

Давайте убедимся, что после peek элемент не извлекается, и вызовем next:

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

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

Some(1) Some(1)

Пример

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

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

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

Some(2)

Пример

Давайте вызовем peek у пустого итератора:

fn main() { let mut iter = Vec::<i32>::new().into_iter().peekable(); let res = iter.peek(); println!("{:?}", res); }

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

None

Пример

Давайте используем peek в цикле, чтобы обрабатывать элементы, пока следующий не станет больше трёх:

fn main() { let mut iter = vec![1, 2, 3, 4, 5].into_iter().peekable(); while let Some(&val) = iter.peek() { if val > 3 { break; } println!("{}", val); iter.next(); } }

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

1 2 3

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

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