diff --git a/src/core/utils/bool.rs b/src/core/utils/bool.rs index e9db1e4f..fed8774b 100644 --- a/src/core/utils/bool.rs +++ b/src/core/utils/bool.rs @@ -23,6 +23,10 @@ pub trait BoolExt { #[allow(clippy::result_unit_err)] fn into_result(self) -> Result<(), ()>; + fn then_ok_or(self, t: T, e: E) -> Result; + + fn then_ok_or_else E>(self, t: T, e: F) -> Result; + fn map T>(self, f: F) -> T where Self: Sized; @@ -67,6 +71,14 @@ impl BoolExt for bool { #[inline] fn into_result(self) -> Result<(), ()> { self.ok_or(()) } + #[inline] + fn then_ok_or(self, t: T, e: E) -> Result { self.map_ok_or(e, move || t) } + + #[inline] + fn then_ok_or_else E>(self, t: T, e: F) -> Result { + self.ok_or_else(e).map(move |()| t) + } + #[inline] fn map T>(self, f: F) -> T where