use std::slice;
pub struct Iter<'a, T: 'a> {
item: Option<(&'a T, slice::Iter<'a, T>)>,
is_first: bool,
}
impl<'a, T> Iter<'a, T> {
pub fn with(item: Option<(&'a T, slice::Iter<'a, T>)>) -> Iter<'a, T> {
Iter {
item: item,
is_first: true,
}
}
}
impl<'a, T> Iterator for Iter<'a, T> {
type Item = &'a T;
fn next(&mut self) -> Option<&'a T> {
match &mut self.item {
&mut None => None,
&mut Some((ref first, ref mut vec)) => {
if self.is_first {
self.is_first = false;
Some(first)
} else {
vec.next()
}
}
}
}
}