diff --git a/src/core/utils/result.rs b/src/core/utils/result.rs index 62a13cb3..d45672c4 100644 --- a/src/core/utils/result.rs +++ b/src/core/utils/result.rs @@ -4,6 +4,7 @@ mod filter; mod flat_ok; mod inspect_log; mod into_is_ok; +mod is_err_or; mod log_debug_err; mod log_err; mod map_expect; @@ -19,6 +20,7 @@ pub use self::{ flat_ok::FlatOk, inspect_log::{ErrDebugLog, ErrLog}, into_is_ok::IntoIsOk, + is_err_or::IsErrOr, log_debug_err::LogDebugErr, log_err::LogErr, map_expect::MapExpect, diff --git a/src/core/utils/result/is_err_or.rs b/src/core/utils/result/is_err_or.rs new file mode 100644 index 00000000..1d0e143c --- /dev/null +++ b/src/core/utils/result/is_err_or.rs @@ -0,0 +1,17 @@ +#![allow(clippy::wrong_self_convention)] + +use super::Result; + +pub trait IsErrOr { + fn is_err_or bool>(self, f: F) -> bool; +} + +impl IsErrOr for Result { + #[inline] + fn is_err_or(self, f: F) -> bool + where + F: FnOnce(T) -> bool, + { + if let Ok(t) = self { f(t) } else { true } + } +}