#![no_std]
pub use self::prelude::*;
pub mod prelude {
pub trait OptionInspector<T> {
fn inspect<F: FnMut(&T)>(self, f: F) -> Option<T>;
}
impl<T> OptionInspector<T> for Option<T> {
fn inspect<F: FnMut(&T)>(self, mut f: F) -> Option<T> {
self.map(|it| {
f(&it);
it
})
}
}
pub trait ResultInspector<T, E> {
fn inspect<F: FnMut(&T)>(self, f: F) -> Result<T, E>;
fn inspect_err<F: FnMut(&E)>(self, f: F) -> Result<T, E>;
}
impl<T, E> ResultInspector<T, E> for Result<T, E> {
fn inspect<F: FnMut(&T)>(self, mut f: F) -> Result<T, E> {
self.map(|it| {
f(&it);
it
})
}
fn inspect_err<F: FnMut(&E)>(self, mut f: F) -> Result<T, E> {
self.map_err(|err| {
f(&err);
err
})
}
}
}