macro_rules! def_iter {
() => {
#[inline]
fn next(&mut self) -> Option<Self::Item> {
self.iter.next().map(Self::map)
}
#[inline]
fn nth(&mut self, n: usize) -> Option<Self::Item> {
self.iter.nth(n).map(Self::map)
}
#[inline]
fn last(self) -> Option<Self::Item> {
self.iter.last().map(Self::map)
}
#[inline]
fn size_hint(&self) -> (usize, Option<usize>) {
self.iter.size_hint()
}
#[inline]
fn count(self) -> usize {
self.iter.count()
}
#[inline]
fn collect<C>(self) -> C
where
C: std::iter::FromIterator<Self::Item>,
{
self.iter.map(Self::map).collect()
}
};
}
macro_rules! def_double_ended_iter {
() => {
#[inline]
fn next_back(&mut self) -> Option<Self::Item> {
self.iter.next_back().map(Self::map)
}
};
}
pub(crate) use def_double_ended_iter;
pub(crate) use def_iter;