use core::{iter::FusedIterator, slice};
#[derive(Clone, Debug)]
pub struct Iter<'a, T>(slice::Iter<'a, T>);
impl<'a, T> Iter<'a, T>
where
T: 'a,
{
pub(super) fn new(entries: &'a [T]) -> Self {
Self(entries.iter())
}
}
impl<'a, T> Iterator for Iter<'a, T>
where
T: 'a,
{
type Item = &'a T;
fn next(&mut self) -> Option<Self::Item> {
self.0.next()
}
fn size_hint(&self) -> (usize, Option<usize>) {
self.0.size_hint()
}
}
impl<'a, T> DoubleEndedIterator for Iter<'a, T>
where
T: 'a,
{
fn next_back(&mut self) -> Option<Self::Item> {
self.0.next_back()
}
}
impl<'a, T> ExactSizeIterator for Iter<'a, T> {}
impl<'a, T> FusedIterator for Iter<'a, T> {}