DI5NRQZB4J4AARWOX7L4NXCPNLPOTXFZTMTQZRVY2HNK62GVL5ZQC OQCFKTKCBTWGXL27ZLWQSL4L5VPREJAYN7MVCCR4GXW6WLWYOUHAC LNM226ITXRMWOSX6GOJ4HO72BWFRBDKQTEZMF4QUJUACUIOKIEJQC EKYR4HDT6DHI7H5YMSHEBHXLPDCA2X2XNXYHDKHWGMPHNVTUBCMQC GFUITBG5JGUCDMG34FEMPPJAZGQKURXA5L2RYS6YOQC4DIQGASMAC SMF45OOVG5OQLHXVD4AG2D6RFHGH55MO2PVBRPBHAOUTIKUE25IQC 77T3TBBG5VN2Q4AUXHQVZTIFOSXDGTHW72J4MLX4P7LMYQURYZJAC 3YMIGCYC3YUOZP5OBNSTOIJOT6ZTEDDKNMR5YCAJRD5JNBYFETYAC CITEDKPB6MKVZUEYEDE5ZKTNVY35HCOAXKDPYG7YLLEOVFNMSRXQC 6BNRWGF55J5M3YBWYNTWJCRJQSEHY7YRKOUBV43W7I2HCTFDJHUQC NVJJABMFM5CUP7M2BAPEIZIVK5IV7OGL7ERK237RR33I2ABFXUUQC X4XC4Q2MJC6Q45SOWNGIG2PWZFE4AG5E3M5ZW3OGV6ABUVC2XNGQC OXKWHQFHTDDOWX3QDMHDWHCT3HFKWQS7Z7DEL3ILJBA7GNITA4GAC ZDN7BJ3JA3VL4AYWX3SV24GHP6NCAETJVAKAXKMIZTLHTWLUNMOQC HO72KYBN3DYN6EC2RQUW4YP3CFBSY4X3ULYLFA2HQ36S5QGTGKIQC 3ZZ75E2AOF7DO3TMR422QV7ZXNYOQZTOGF67LVSCEMX6N75Y36LAC N7U2FHPRHGARPZ6M7LYBDJ52NMYE23VD5YALZ7CC76W3V5OLBP7QC RF4MODRCRWKMUG26O222X3ZY3MLE6X7BYZDWEQRLVUITTWYAGNUAC AOQSHDBY3FLBJBFEIJQDYHGQOBECTYRN3KPWJWQMCVWDTB6L2IRQC use eyre::{eyre, Report, WrapErr};fn main() -> Result<(), Report> {let e: Report = eyre!("oh no this program is just bad!");Err(e).wrap_err("usage example successfully experienced a failure")}
/// ```rust,compile_fail/// type Report = eyre::Report<MyContext>;
/// ```rust/// use backtrace::Backtrace;/// use eyre::EyreContext;/// # use eyre::Chain;/// # use std::error::Error;////// pub struct Context {/// backtrace: Backtrace,/// }////// impl EyreContext for Context {/// // .../// # #[allow(unused_variables)]/// # fn default(error: &(dyn Error + 'static)) -> Self {/// # let backtrace = Backtrace::new();/// # Self { backtrace }/// # }/// # 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!(indenter::Indented::numbered(f, n), "{}", error)?;/// # } else {/// # write!(indenter::Indented::new(f), "{}", error)?;/// # }/// # }/// # }/// # let backtrace = &self.backtrace;/// # write!(f, "\n\nStack backtrace:\n{:?}", backtrace)?;/// # Ok(())/// # }/// }
/// # 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!(indenter::Indented::numbered(f, n), "{}", error)?;/// # } else {/// # write!(indenter::Indented::new(f), "{}", error)?;/// # }/// # }/// # }/// # let backtrace = &self.backtrace;/// # write!(f, "\n\nStack backtrace:\n{:?}", backtrace)?;/// # Ok(())/// # }
let mut backtrace = backtrace.to_string();if backtrace.starts_with("stack backtrace:") {// Capitalize to match "Caused by:"backtrace.replace_range(0..1, "S");}backtrace.truncate(backtrace.trim_end().len());write!(f, "\n\n{}", backtrace)?;
write!(f, "\n\nStack backtrace:\n{}", backtrace)?;