Skip to main content

BackendError

Trait BackendError 

Source
pub trait BackendError: Error + Sync {
    type ErrorType: Debug;

    // Required methods
    fn new_with_traces_and_location<M, S>(
        error_type: Self::ErrorType,
        message: M,
        source_error: S,
        backtrace: Backtrace,
        span_trace: SpanTrace,
        location: Option<&'static Location<'static>>,
    ) -> Self
       where M: Into<String>,
             S: Into<Option<Error>>;
    fn backtrace(&self) -> Option<&Backtrace>;
    fn error_type(&self) -> &Self::ErrorType;
    fn message(&self) -> &str;
    fn span_trace(&self) -> &SpanTrace;
    fn location(&self) -> Option<&'static Location<'static>>;

    // Provided methods
    fn new<M, S>(
        error_type: Self::ErrorType,
        message: M,
        source_error: S,
    ) -> Self
       where M: Into<String>,
             S: Into<Option<Error>>,
             Self: Sized { ... }
    fn new_with_traces<M, S>(
        error_type: Self::ErrorType,
        message: M,
        source_error: S,
        backtrace: Backtrace,
        span_trace: SpanTrace,
    ) -> Self
       where M: Into<String>,
             S: Into<Option<Error>>,
             Self: Sized { ... }
    fn to_different_error<T>(
        self,
        new_error_type: <T as BackendError>::ErrorType,
        new_message: String,
    ) -> T
       where T: BackendError,
             Self: Sized + 'static + Send { ... }
}
Expand description

The error types of this program all implement this trait for interoperability.

Required Associated Types§

Required Methods§

Source

fn new_with_traces_and_location<M, S>( error_type: Self::ErrorType, message: M, source_error: S, backtrace: Backtrace, span_trace: SpanTrace, location: Option<&'static Location<'static>>, ) -> Self
where M: Into<String>, S: Into<Option<Error>>,

The one required constructor; the others delegate to it.

Source

fn backtrace(&self) -> Option<&Backtrace>

Source

fn error_type(&self) -> &Self::ErrorType

Source

fn message(&self) -> &str

Source

fn span_trace(&self) -> &SpanTrace

Source

fn location(&self) -> Option<&'static Location<'static>>

Source location where the error was raised, if captured.

Provided Methods§

Source

fn new<M, S>(error_type: Self::ErrorType, message: M, source_error: S) -> Self
where M: Into<String>, S: Into<Option<Error>>, Self: Sized,

Create an error, capturing the caller’s location, a backtrace and the span trace.

#[track_caller] makes Location::caller resolve to the real call site, even through the *_err! macros, rather than to this method.

Source

fn new_with_traces<M, S>( error_type: Self::ErrorType, message: M, source_error: S, backtrace: Backtrace, span_trace: SpanTrace, ) -> Self
where M: Into<String>, S: Into<Option<Error>>, Self: Sized,

Like new but with an explicit backtrace and span trace, e.g. to preserve a source error’s traces.

Source

fn to_different_error<T>( self, new_error_type: <T as BackendError>::ErrorType, new_message: String, ) -> T
where T: BackendError, Self: Sized + 'static + Send,

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.

Implementors§