pub trait LoggableError { fn info_failed(self, msg: &str); fn warn_failed(self, msg: &str); fn err_failed(self, msg: &str); } impl LoggableError for Result { fn info_failed(self, msg: &str) { if let Err(e) = self { tracing::info!("{} : {}", msg, e); } } fn warn_failed(self, msg: &str) { if let Err(e) = self { tracing::warn!("{} : {}", msg, e); } } fn err_failed(self, msg: &str) { if let Err(e) = self { tracing::error!("{} : {}", msg, e); } } }