use super::Read;
use std::ops::Deref;
pub type Entry<'a> = (&'a [u8], &'a [u8]);
pub trait Iter<'a>: Read {
type Iter: Iterator<Item = Entry<'a>>;
fn iter_from(&'a self, start: &[u8]) -> Self::Iter;
fn iter(&'a self) -> Self::Iter {
self.iter_from(&[])
}
}
impl<'a, T, I> Iter<'a> for T
where
I: Iter<'a> + 'a,
T: Deref<Target = I>,
{
type Iter = I::Iter;
fn iter_from(&'a self, start: &[u8]) -> I::Iter {
(**self).iter_from(start)
}
}