pub trait PipeIf
where
Self: Sized
{
#[inline]
#[must_use]
fn pipe_if<F>(self, predicate: bool, f: F) -> Self
where
F: FnOnce(Self) -> Self
{
if predicate { f(self) } else { self }
}
#[inline]
#[must_use]
fn pipe_opt<T, F>(self, opt: Option<T>, f: F) -> Self
where
F: FnOnce(Self, T) -> Self
{
if let Some(r) = opt { f(self, r) } else { self }
}
#[inline]
#[must_use]
fn pipe_optref<T, F>(self, opt: Option<&T>, f: F) -> Self
where
F: FnOnce(Self, &T) -> Self
{
if let Some(r) = opt { f(self, r) } else { self }
}
}
impl<T> PipeIf for T {}