write!(m, " ({}ok)", self.successes)?;
self.successes = 0;
}
- write!(m, ": {:?}", e)?;
+ write!(m, ": {}", e)?;
Ok::<_,fmt::Error>(m)
})().unwrap();
warn!(target:"hippotat", "{}", m);
type EyreDynError<'r> = &'r (dyn std::error::Error + 'static);
impl eyre::EyreHandler for EyreDedupHandler {
+ #[throws(fmt::Error)]
+ fn display(&self, error: EyreDynError, f: &mut fmt::Formatter) {
+ let mut last: Option<String> = None;
+ let mut error = Some(error);
+ while let Some(e) = error {
+ let m = e.to_string();
+ match last {
+ None => write!(f, "{}", m)?,
+ Some(l) if l.contains(&m) => { },
+ Some(_) => write!(f, ": {}", m)?,
+ }
+ last = Some(m);
+ error = e.source();
+ }
+ }
+
#[throws(fmt::Error)]
fn debug(&self, error: EyreDynError, f: &mut fmt::Formatter) {
if f.alternate() {
backtrace.resolve();
write!(f, "\n\nStack backtrace:\n{:?}", backtrace)?;
}
- #[throws(fmt::Error)]
- fn display(&self, error: EyreDynError, f: &mut fmt::Formatter) {
- Display::fmt(error, f)?;
- }
}
#[throws(AE)]