pub struct ControllerError {
    error_type: <ControllerError as BackendError>::ErrorType,
    message: String,
    source: Option<Error>,
    span_trace: SpanTrace,
    backtrace: Backtrace,
}
Expand description

Represents error messages that are sent in responses. Used as the error type in ControllerError, which is used by all the controllers in the application.

All the information in the error is meant to be seen by the user. The type of error is determined by the ControllerErrorType enum, which is stored inside this struct. The type of the error determines which HTTP status code will be sent to the user.

Examples

Usage without source error

if erroneous_condition {
    return Err(ControllerError::new(
        ControllerErrorType::BadRequest,
        "Cannot create a new account when signed in.".to_string(),
        None,
    ));
}

Usage with a source error

Used when calling a function that returns an error that cannot be automatically converted to an ControllerError. (See impl From<X> implementations on this struct.)

some_function_returning_an_error().map_err(|original_error| {
    ControllerError::new(
        ControllerErrorType::InternalServerError,
        "Could not read file".to_string(),
        Some(original_error.into()),
    )
})?;

Example HTTP response from an error

{
    "title": "Internal Server Error",
    "message": "pool timed out while waiting for an open connection",
    "source": "source of error"
}

Fields§

§error_type: <ControllerError as BackendError>::ErrorType§message: String§source: Option<Error>

Original error that caused this error.

§span_trace: SpanTrace

A trace of tokio tracing spans, generated automatically when the error is generated.

§backtrace: Backtrace

Stack trace, generated automatically when the error is created.

Trait Implementations§

source§

impl BackendError for ControllerError

§

type ErrorType = ControllerErrorType

source§

fn new( error_type: Self::ErrorType, message: String, source_error: Option<Error> ) -> Self

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 new_with_traces( error_type: Self::ErrorType, message: String, source_error: Option<Error>, backtrace: Backtrace, span_trace: SpanTrace ) -> Self

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,

source§

impl Debug for ControllerError

Custom formatter so that errors that get printed to the console are easy-to-read with proper context where the error is coming from.

source§

fn fmt(&self, f: &mut Formatter<'_>) -> Result

Formats the value using the given formatter. Read more
source§

impl Display for ControllerError

source§

fn fmt(&self, f: &mut Formatter<'_>) -> Result

Formats the value using the given formatter. Read more
source§

impl Error for ControllerError

source§

fn source(&self) -> Option<&(dyn Error + 'static)>

The lower-level source of this error, if any. Read more
source§

fn cause(&self) -> Option<&dyn Error>

👎Deprecated since 1.33.0: replaced by Error::source, which can support downcasting
1.0.0 · source§

fn description(&self) -> &str

👎Deprecated since 1.42.0: use the Display impl or to_string()
source§

fn provide<'a>(&'a self, request: &mut Request<'a>)

🔬This is a nightly-only experimental API. (error_generic_member_access)
Provides type based access to context intended for error reports. Read more
source§

impl From<Error> for ControllerError

source§

fn from(err: Error) -> ControllerError

Converts to this type from the input type.
source§

impl From<Error> for ControllerError

source§

fn from(err: Error) -> ControllerError

Converts to this type from the input type.
source§

impl From<Error> for ControllerError

source§

fn from(err: Error) -> ControllerError

Converts to this type from the input type.
source§

impl From<Error> for ControllerError

source§

fn from(err: Error) -> Self

Converts to this type from the input type.
source§

impl From<Error> for ControllerError

source§

fn from(err: Error) -> ControllerError

Converts to this type from the input type.
source§

impl From<ModelError> for ControllerError

source§

fn from(err: ModelError) -> Self

Converts to this type from the input type.
source§

impl From<MultipartError> for ControllerError

source§

fn from(err: MultipartError) -> Self

Converts to this type from the input type.
source§

impl From<UtilError> for ControllerError

source§

fn from(err: UtilError) -> Self

Converts to this type from the input type.
source§

impl ResponseError for ControllerError

source§

fn error_response(&self) -> HttpResponse

Creates full response for error. Read more
source§

fn status_code(&self) -> StatusCode

Returns appropriate status code for error. Read more

Auto Trait Implementations§

Blanket Implementations§

source§

impl<T> Any for T
where T: 'static + ?Sized,

source§

fn type_id(&self) -> TypeId

Gets the TypeId of self. Read more
source§

impl<T> Borrow<T> for T
where T: ?Sized,

source§

fn borrow(&self) -> &T

Immutably borrows from an owned value. Read more
source§

impl<T> BorrowMut<T> for T
where T: ?Sized,

source§

fn borrow_mut(&mut self) -> &mut T

Mutably borrows from an owned value. Read more
source§

impl<T> Chain<T> for T

source§

fn len(&self) -> usize

The number of items that this chain link consists of.
source§

fn append_to(self, v: &mut Vec<T>)

Append the elements in this link to the chain.
source§

impl<T> From<T> for T

source§

fn from(t: T) -> T

Returns the argument unchanged.

source§

impl<T> Instrument for T

source§

fn instrument(self, span: Span) -> Instrumented<Self>

Instruments this type with the provided Span, returning an Instrumented wrapper. Read more
source§

fn in_current_span(self) -> Instrumented<Self>

Instruments this type with the current Span, returning an Instrumented wrapper. Read more
source§

impl<E> InstrumentError for E
where TracedError<E>: From<E>,

§

type Instrumented = TracedError<E>

The type of the wrapped error after instrumentation
source§

fn in_current_span(self) -> <E as InstrumentError>::Instrumented

Instrument an Error by bundling it with a SpanTrace Read more
source§

impl<T, U> Into<U> for T
where U: From<T>,

source§

fn into(self) -> U

Calls U::from(self).

That is, this conversion is whatever the implementation of From<T> for U chooses to do.

source§

impl<T> Same for T

§

type Output = T

Should always be Self
source§

impl<T> ToString for T
where T: Display + ?Sized,

source§

default fn to_string(&self) -> String

Converts the given value to a String. Read more
source§

impl<T, U> TryFrom<U> for T
where U: Into<T>,

§

type Error = Infallible

The type returned in the event of a conversion error.
source§

fn try_from(value: U) -> Result<T, <T as TryFrom<U>>::Error>

Performs the conversion.
source§

impl<T, U> TryInto<U> for T
where U: TryFrom<T>,

§

type Error = <U as TryFrom<T>>::Error

The type returned in the event of a conversion error.
source§

fn try_into(self) -> Result<U, <U as TryFrom<T>>::Error>

Performs the conversion.
source§

impl<V, T> VZip<V> for T
where V: MultiLane<T>,

source§

fn vzip(self) -> V

source§

impl<T> WithSubscriber for T

source§

fn with_subscriber<S>(self, subscriber: S) -> WithDispatch<Self>
where S: Into<Dispatch>,

Attaches the provided Subscriber to this type, returning a WithDispatch wrapper. Read more
source§

fn with_current_subscriber(self) -> WithDispatch<Self>

Attaches the current default Subscriber to this type, returning a WithDispatch wrapper. Read more
source§

impl<T> ErasedDestructor for T
where T: 'static,

source§

impl<T> MaybeSendSync for T