Trait eyre::EyreHandler [−][src]
pub trait EyreHandler: Any + Send + Sync { fn debug(
&self,
error: &(dyn StdError + 'static),
f: &mut Formatter<'_>
) -> Result; fn display(
&self,
error: &(dyn StdError + 'static),
f: &mut Formatter<'_>
) -> Result { ... } fn track_caller(&mut self, location: &'static Location<'static>) { ... } }
Expand description
Error Report Handler trait for customizing eyre::Report
Required methods
Define the report format
Used to override the report format of eyre::Report
Example
use backtrace::Backtrace; use eyre::EyreHandler; use eyre::Chain; use std::error::Error; use indenter::indented; pub struct Handler { backtrace: Backtrace, } impl EyreHandler for Handler { fn debug( &self, error: &(dyn Error + 'static), f: &mut core::fmt::Formatter<'_>, ) -> core::fmt::Result { use core::fmt::Write as _; if f.alternate() { return core::fmt::Debug::fmt(error, f); } write!(f, "{}", error)?; if let Some(cause) = error.source() { write!(f, "\n\nCaused by:")?; let multiple = cause.source().is_some(); for (n, error) in Chain::new(cause).enumerate() { writeln!(f)?; if multiple { write!(indented(f).ind(n), "{}", error)?; } else { write!(indented(f), "{}", error)?; } } } let backtrace = &self.backtrace; write!(f, "\n\nStack backtrace:\n{:?}", backtrace)?; Ok(()) } }
Provided methods
Override for the Display
format
fn track_caller(&mut self, location: &'static Location<'static>)
fn track_caller(&mut self, location: &'static Location<'static>)
Store the location of the caller who constructed this error report