replace LimitedQueueIter with type alias

This commit is contained in:
MaxOhn
2022-07-04 14:21:52 +02:00
parent 7ed1ac5226
commit 6b410911e2
+3 -25
View File
@@ -58,14 +58,11 @@ impl<T> LimitedQueue<T> {
#[inline] #[inline]
pub(crate) fn iter(&self) -> LimitedQueueIter<'_, T> { pub(crate) fn iter(&self) -> LimitedQueueIter<'_, T> {
let iter = self self.queue
.queue
.iter() .iter()
.cycle() .cycle()
.skip(self.start) .skip(self.start)
.take(self.queue.len()); .take(self.queue.len())
LimitedQueueIter { iter }
} }
} }
@@ -91,23 +88,4 @@ impl<T> Index<usize> for LimitedQueue<T> {
} }
} }
// TODO: replace with simple type definition pub(crate) type LimitedQueueIter<'a, T> = Take<Skip<Cycle<Iter<'a, T>>>>;
pub(crate) struct LimitedQueueIter<'a, T> {
iter: Take<Skip<Cycle<Iter<'a, T>>>>,
}
impl<'a, T> Iterator for LimitedQueueIter<'a, T> {
type Item = &'a T;
#[inline]
fn next(&mut self) -> Option<Self::Item> {
self.iter.next()
}
#[inline]
fn size_hint(&self) -> (usize, Option<usize>) {
self.iter.size_hint()
}
}
impl<'a, T> ExactSizeIterator for LimitedQueueIter<'a, T> {}