diff --git a/src/result.rs b/src/result.rs index 53d31e1..f1b8f3c 100644 --- a/src/result.rs +++ b/src/result.rs @@ -30,3 +30,26 @@ impl LogAndIgnore for Result { } } } + +pub trait LogNoneAndPass { + fn log_warn_none_and_pass(self, msg: impl Fn() -> String) -> Self; + fn log_err_none_and_pass(self, msg: impl Fn() -> String) -> Self; +} + +impl LogNoneAndPass for Option { + fn log_warn_none_and_pass(self, msg: impl Fn() -> String) -> Option { + if matches!(self, None) { + log::warn!("{}", msg()); + } + + return self; + } + + fn log_err_none_and_pass(self, msg: impl Fn() -> String) -> Option { + if matches!(self, None) { + log::error!("{}", msg()); + } + + return self; + } +}