1
0
Fork 0
forked from wry/wry
wry/src/utils/errorfmt.rs
2022-01-08 19:02:11 +01:00

21 lines
545 B
Rust

use std::error::Error;
use std::fmt::{Display, Formatter};
pub struct ErrorFmt<E>(pub E);
impl<E: Error> Display for ErrorFmt<E> {
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(())
}
}