From 72147c627ff948f034e9da349e56f920d36d2982 Mon Sep 17 00:00:00 2001 From: Fenhl Date: Sat, 11 Apr 2020 19:45:34 +0000 Subject: [PATCH] Add multipeek method --- src/lib.rs | 22 ++++++++++++++++++++++ 1 file changed, 22 insertions(+) diff --git a/src/lib.rs b/src/lib.rs index 2fe735273..0ab699e25 100644 --- a/src/lib.rs +++ b/src/lib.rs @@ -2625,6 +2625,28 @@ pub trait Itertools : Iterator { None => Err(ExactlyOneError::new((None, None), self)), } } + + /// An iterator adaptor that allows the user to peek at multiple `.next()` + /// values without advancing the base iterator. + /// + /// # Examples + /// ``` + /// use itertools::Itertools; + /// + /// let mut iter = (0..10).multipeek(); + /// assert_eq!(iter.peek(), Some(&0)); + /// assert_eq!(iter.peek(), Some(&1)); + /// assert_eq!(iter.peek(), Some(&2)); + /// assert_eq!(iter.next(), Some(0)); + /// assert_eq!(iter.peek(), Some(&1)); + /// ``` + #[cfg(feature = "use_std")] + fn multipeek(self) -> MultiPeek + where + Self: Sized, + { + multipeek_impl::multipeek(self) + } } impl Itertools for T where T: Iterator { }