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.

Implementations on Foreign Types§

Source§

impl BackendError for ChatbotError

Source§

type ErrorType = ChatbotErrorType

Source§

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

Source§

fn error_type(&self) -> &<ChatbotError as BackendError>::ErrorType

Source§

fn message(&self) -> &str

Source§

fn span_trace(&self) -> &SpanTrace

Source§

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

Source§

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

Implementors§