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}