Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- struct DoubleIfNextOdd<I: Iterator>(std::iter::Peekable<I>);
- impl<I: Iterator<Item = i32>> Iterator for DoubleIfNextOdd<I> {
- type Item = I::Item;
- fn next(&mut self) -> Option<Self::Item> {
- let double = match self.0.peek() {
- Some(i) if i % 2 != 0 => true,
- _ => false,
- };
- if double {
- self.0.next().map(|i| i * 2)
- }
- else {
- self.0.next()
- }
- }
- }
- fn main() {
- for i in DoubleIfNextOdd(vec![1, 2, 3].into_iter().peekable()) {
- println!("{}", i);
- }
- }
Add Comment
Please, Sign In to add comment