flex_error/tracer_impl/
eyre.rs1use crate::tracer::{ErrorMessageTracer, ErrorTracer};
2use core::fmt::{Debug, Display};
3
4pub type EyreTracer = eyre::Report;
6
7impl ErrorMessageTracer for EyreTracer {
8 fn new_message<E: Display>(err: &E) -> Self {
9 let message = alloc::format!("{}", err);
10 EyreTracer::msg(message)
11 }
12
13 fn add_message<E: Display>(self, err: &E) -> Self {
14 let message = alloc::format!("{}", err);
15 self.wrap_err(message)
16 }
17
18 #[cfg(feature = "std")]
19 fn as_error(&self) -> Option<&(dyn std::error::Error + 'static)> {
20 use core::ops::Deref;
21 Some(self.deref())
22 }
23}
24
25impl<E> ErrorTracer<E> for EyreTracer
26where
27 E: Display + Debug + Send + Sync + 'static,
28{
29 fn new_trace(err: E) -> Self {
30 EyreTracer::msg(err)
31 }
32
33 fn add_trace(self, err: E) -> Self {
34 let message = alloc::format!("{}", err);
35 self.wrap_err(message)
36 }
37}