pub trait ErrorSource<Trace> {
type Source;
type Detail;
// Required method
fn error_details(source: Self::Source) -> (Self::Detail, Option<Trace>);
}Expand description
A type implementing ErrorSource<Trace> is a proxy type that provides the
capability of extracting from an error source of type Self::Source,
returning error detail of type Self::Detail, and an optional error
tracer of type Tracer.
The proxy type Self is not used anywhere. We separate out Self
and Self::Source so that there can be different generic implementations
of error sources, such as for all E: Display or for all E: Error.
There are currently 4 types of error sources:
NoSource- Indicating the lack of any error sourceDisplayError- An error source that implementsDisplayto be used for tracing, and also be stored as detail.DisplayOnly- An error source that implementsDisplayto be used for tracing, and discarded instead of being stored as detail.DetailOnly- An error source that is used as detail and do not contain any error trace.TraceError- An error source that implementsErrorand used only for tracing.TraceClone- An error source that implementsErrorand have a cloned copy as detail.
Required Associated Types§
Required Methods§
Sourcefn error_details(source: Self::Source) -> (Self::Detail, Option<Trace>)
fn error_details(source: Self::Source) -> (Self::Detail, Option<Trace>)
Extracts the error details out from the error source, together with an optional error trace.
Dyn Compatibility§
This trait is not dyn compatible.
In older versions of Rust, dyn compatibility was called "object safety", so this trait is not object safe.