Trait flex_error::ErrorSource[][src]

pub trait ErrorSource<Trace> {
    type Source;
    type Detail;
    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 source
  • DisplayError - An error source that implements Display to be used for tracing, and also be stored as detail.
  • DisplayOnly - An error source that implements Display to 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 implements Error and used only for tracing.
  • TraceClone - An error source that implements Error and have a cloned copy as detail.

Associated Types

The type of the error source.

The type of the error detail that can be extracted from the error source

Required methods

Extracts the error details out from the error source, together with an optional error trace.

Implementors