Метод peekable
Метод peekable создаёт обёртку над итератором -
Peekable, которая позволяет посмотреть на следующий
элемент, не потребляя его. Это удобно, когда нужно принять
решение о дальнейшей обработке, основываясь на значении
следующего элемента. Метод не принимает параметров и
возвращает значение типа Peekable. У полученной
обёртки доступны методы peek, peek_mut
и next.
Синтаксис
iterator.peekable()
Пример
Давайте создадим Peekable из вектора и заглянем на следующий элемент, не извлекая его:
fn main()
{
let mut iter = vec![1, 2, 3, 4, 5].into_iter().peekable();
let first = iter.peek();
println!("{:?}", first);
println!("{:?}", iter.next());
}
Результат выполнения кода:
Some(1)
Some(1)
Пример
Давайте посмотрим, как peek возвращает None,
когда итератор исчерпан:
fn main()
{
let mut iter = vec!["a", "b"].into_iter().peekable();
println!("{:?}", iter.next());
println!("{:?}", iter.next());
println!("{:?}", iter.peek());
}
Результат выполнения кода:
Some("a")
Some("b")
None