#![doc = include_str!("../README.md")]
pub trait Pick<O>: private::Sealed {
fn pick(self, when_true: O, when_false: O) -> O;
fn pick_lazy<P, N>(self, when_true: P, when_false: N) -> O
where
P: FnOnce() -> O,
N: FnOnce() -> O;
}
mod private {
pub trait Sealed {}
impl Sealed for bool {}
}
impl<O> Pick<O> for bool {
#[inline]
fn pick(self: bool, when_true: O, when_false: O) -> O {
if self {
when_true
} else {
when_false
}
}
#[inline]
fn pick_lazy<P, N>(self: bool, when_true: P, when_false: N) -> O
where
P: FnOnce() -> O,
N: FnOnce() -> O,
{
if self {
when_true()
} else {
when_false()
}
}
}