one_stack_vec/
iter.rs

1use std::slice;
2
3pub struct Iter<'a, T: 'a> {
4    item: Option<(&'a T, slice::Iter<'a, T>)>,
5    is_first: bool,
6}
7
8impl<'a, T> Iter<'a, T> {
9    pub fn with(item: Option<(&'a T, slice::Iter<'a, T>)>) -> Iter<'a, T> {
10        Iter {
11            item: item,
12            is_first: true,
13        }
14    }
15}
16
17
18impl<'a, T> Iterator for Iter<'a, T> {
19    type Item = &'a T;
20
21    fn next(&mut self) -> Option<&'a T> {
22        match &mut self.item {
23            &mut None => None,
24            &mut Some((ref first, ref mut vec)) => {
25                if self.is_first {
26                    self.is_first = false;
27                    Some(first)
28                } else {
29                    vec.next()
30                }
31            }
32        }
33    }
34}