use std::fmt::Debug; pub trait LogErr { fn log_err(self, additional: &str) -> Self; fn log_err_with(self, additional: &D) -> Self; fn log_warn(self, additional: &str) -> Self; fn log_warn_with(self, additional: &D) -> Self; } impl LogErr for Result where E: Debug + Send + Sync + 'static, { fn log_warn(self, additional: &str) -> Result { match self { Ok(ok) => Ok(ok), Err(error) => { log::warn!("{additional}: {error:?}"); Err(error) } } } fn log_warn_with(self, additional: &D) -> Result { match self { Ok(ok) => Ok(ok), Err(error) => { log::warn!("{additional:?}: {error:?}"); Err(error) } } } fn log_err(self, additional: &str) -> Result { match self { Ok(ok) => Ok(ok), Err(error) => { log::error!("{additional}: {error:?}"); Err(error) } } } fn log_err_with(self, additional: &D) -> Self { match self { Ok(ok) => Ok(ok), Err(error) => { log::error!("{additional:?}: {error:?}"); Err(error) } } } }