snafu icon indicating copy to clipboard operation
snafu copied to clipboard

Feature Request: Integration with TracingError

Open dignifiedquire opened this issue 10 months ago • 2 comments

When using tracing in a larger application using tracing-error is quite helpful. It woul be great to have an option to allow capturing a tracing_error::SpanTrace similar to how backtrace capturing works, as part of the generated macro.

I'd be happy to write up a PR, but wanted to get some feedback on this first

#[derive(Debug, Snafu)]
pub enum CoolError {
     A {
       bactrace: Option<Backtrace>,
       // Auto detected
       span_trace: SpanTrace,
     }
     B {
       #[snafu(span_trace)] // manual annotation
       my_cool_span_trace: SpanTrace,
     }
}


// Access through sth like extending the ErrorsCompat trait
pub trait ErrorsCompat {
  // make the dependency fully dependent on the feature flag
  #[cfg(feature = "tracing-error")]
  fn span_trace(&self) -> Option<&SpanTrace> {
    None
  }
}

dignifiedquire avatar Feb 20 '25 19:02 dignifiedquire

You can do this today by implementing GenerateImplicitData.

I think this comment is close.

shepmaster avatar Feb 20 '25 19:02 shepmaster

Thanks for the quick response, while that works nicely to generate, it does not give me a way to access the trace in a generic fashion as far as I can tell unfortunately. I am working on a reporting like structure, (that works on stable rust..) and managed to get the backtraces extracted from different error types, thanks to the ErrorCompat::backtrace functionality.

dignifiedquire avatar Feb 20 '25 19:02 dignifiedquire