pub trait BoolExt {
fn then_ok_or_else<E>(self, err_fn: impl FnOnce() -> E) -> Result<(), E>
where
Self: Into<bool>,
{
if self.into() { Ok(()) } else { Err(err_fn()) }
}
fn then_ok_or<E>(self, err: E) -> Result<(), E>
where
Self: Into<bool>,
{
if self.into() { Ok(()) } else { Err(err) }
}
}
impl BoolExt for bool {}
#[cfg(test)]
mod tests {
use tap::TapOptional;
use super::*;
#[ignore]
#[test]
fn test_tap_opt() {
let opt = Some(42);
opt.tap_some(|&x| assert_eq!(x, 42));
opt.map(|x| assert_eq!(x, 42));
}
#[ignore]
#[test]
fn test_bool_ok_or_else() {
let value = true;
let res: Result<(), &str> = value.then_ok_or_else(|| "error");
assert_eq!(res, Ok(()));
let value = false;
assert_eq!(value.then_ok_or_else(|| "error"), Err("error"));
}
#[cfg(feature = "std")]
#[ignore]
#[test]
fn test_bool_ok_or_std_io_error() {
}
}