From a39ef994d2bdae0ca0982127a37217a2092b08f3 Mon Sep 17 00:00:00 2001 From: Jason Volk Date: Mon, 27 Oct 2025 04:46:38 +0000 Subject: [PATCH] Add is_err_or to Result utils. Signed-off-by: Jason Volk --- src/core/utils/result.rs | 2 ++ src/core/utils/result/is_err_or.rs | 17 +++++++++++++++++ 2 files changed, 19 insertions(+) create mode 100644 src/core/utils/result/is_err_or.rs 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 } + } +}