use std::{ error::Error, fmt::{Display, Formatter}, }; pub struct ErrorFmt(pub E); impl Display for ErrorFmt { fn fmt(&self, f: &mut Formatter<'_>) -> std::fmt::Result { let mut e_opt = Some(&self.0 as &dyn Error); let mut first = true; while let Some(e) = e_opt { if first { write!(f, "{}", e)?; first = false; } else { write!(f, ": {}", e)?; } e_opt = e.source(); } Ok(()) } }