mod consume;
mod inspect;
use consume::ConsumeResultErr;
use consume::ConsumeResultOk;
use consume::DiscardNone;
use consume::DiscardResultErr;
use consume::DiscardResultOk;
use inspect::InspectError;
use inspect::InspectOk;
use inspect::InspectSome;
pub trait IterExt: Iterator {
#[inline]
fn inspect_ok<T, E, F>(self, f: F) -> InspectOk<Self, F>
where
Self: Iterator<Item = Result<T, E>> + Sized,
F: FnMut(&T),
{
InspectOk::new(self, f)
}
#[inline]
fn inspect_err<T, E, F>(self, f: F) -> InspectError<Self, F>
where
Self: Iterator<Item = Result<T, E>> + Sized,
F: FnMut(&E),
{
InspectError::new(self, f)
}
#[inline]
fn inspect_some<T, F>(self, f: F) -> InspectSome<Self, F>
where
Self: Iterator<Item = Option<T>> + Sized,
F: FnMut(&T),
{
InspectSome::new(self, f)
}
#[inline]
fn discard_ok<T, E>(self) -> DiscardResultOk<Self>
where
Self: Iterator<Item = Result<T, E>> + Sized,
{
DiscardResultOk::new(self, ())
}
#[inline]
fn discard_err<T, E>(self) -> DiscardResultErr<Self>
where
Self: Iterator<Item = Result<T, E>> + Sized,
{
DiscardResultErr::new(self, ())
}
#[inline]
fn discard_none<T>(self) -> DiscardNone<Self>
where
Self: Iterator<Item = Option<T>> + Sized,
{
DiscardNone::new(self)
}
#[inline]
fn consume_ok<T, E, F>(self, f: F) -> ConsumeResultOk<Self, F>
where
Self: Iterator<Item = Result<T, E>> + Sized,
F: FnMut(T),
{
ConsumeResultOk::new(self, f)
}
#[inline]
fn consume_err<T, E, F>(self, f: F) -> ConsumeResultErr<Self, F>
where
Self: Iterator<Item = Result<T, E>> + Sized,
F: FnMut(E),
{
ConsumeResultErr::new(self, f)
}
}
impl<I> IterExt for I where I: Iterator {}