55 lines
1.6 KiB
Rust
55 lines
1.6 KiB
Rust
pub trait LogAndIgnore {
|
|
fn log_err_and_ignore(self, msg: &str);
|
|
fn log_warn_and_ignore(self, msg: &str);
|
|
}
|
|
|
|
impl<T, E: std::fmt::Debug> LogAndIgnore for Result<T, E> {
|
|
/// Handles the result by ignoring and logging it if it contains an error.
|
|
///
|
|
/// If the result is `Ok`, does nothing.
|
|
/// If the result is `Err(e)`, logs the message provided (`msg`) along with the error as error.
|
|
fn log_err_and_ignore(self, msg: &str) {
|
|
match self {
|
|
Ok(_) => {}
|
|
Err(e) => {
|
|
log::error!("{msg} : {:?}", e);
|
|
}
|
|
}
|
|
}
|
|
|
|
/// Handles the result by ignoring and logging it if it contains an error.
|
|
///
|
|
/// If the result is `Ok`, does nothing.
|
|
/// If the result is `Err(e)`, logs the message provided (`msg`) along with the error as warning.
|
|
fn log_warn_and_ignore(self, msg: &str) {
|
|
match self {
|
|
Ok(_) => {}
|
|
Err(e) => {
|
|
log::warn!("{msg} : {:?}", e);
|
|
}
|
|
}
|
|
}
|
|
}
|
|
|
|
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<T> LogNoneAndPass for Option<T> {
|
|
fn log_warn_none_and_pass(self, msg: impl Fn() -> String) -> Option<T> {
|
|
if matches!(self, None) {
|
|
log::warn!("{}", msg());
|
|
}
|
|
|
|
return self;
|
|
}
|
|
|
|
fn log_err_none_and_pass(self, msg: impl Fn() -> String) -> Option<T> {
|
|
if matches!(self, None) {
|
|
log::error!("{}", msg());
|
|
}
|
|
|
|
return self;
|
|
}
|
|
}
|