Struct headless_lms_models::error::ModelError

source ·
pub struct ModelError {
    error_type: ModelErrorType,
    message: String,
    source: Option<Error>,
    span_trace: SpanTrace,
    backtrace: Backtrace,
}
Expand description

Error type used by all models. Used as the error type in ModelError, 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 ModelErrorType enum, which is stored inside this struct.

§Examples

§Usage without source error

if erroneous_condition {
    return Err(ModelError::new(
        ModelErrorType::PreconditionFailed,
        "The user has not enrolled to this course".to_string(),
        None,
    ));
}

§Usage with a source error

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

some_function_returning_an_error().map_err(|original_error| {
    ModelError::new(
        ModelErrorType::Generic,
        "Everything went wrong".to_string(),
        Some(original_error.into()),
    )
})?;

Fields§

§error_type: ModelErrorType§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 ModelError

§

type ErrorType = ModelErrorType

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 ModelError

source§

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

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

impl Display for ModelError

source§

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

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

impl Error for ModelError

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 ModelError

source§

fn from(err: Error) -> Self

Converts to this type from the input type.
source§

impl From<Error> for ModelError

source§

fn from(err: Error) -> ModelError

Converts to this type from the input type.
source§

impl From<Error> for ModelError

source§

fn from(source: Error) -> Self

Converts to this type from the input type.
source§

impl From<ParseError> for ModelError

source§

fn from(err: ParseError) -> ModelError

Converts to this type from the input type.
source§

impl From<TryFromIntError> for ModelError

source§

fn from(source: TryFromIntError) -> Self

Converts to this type from the input type.
source§

impl From<UtilError> for ModelError

source§

fn from(source: UtilError) -> Self

Converts to this type from the input type.
source§

impl<T> TryToOptional<T, ModelError> for ModelResult<T>

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> IntoEither for T

source§

fn into_either(self, into_left: bool) -> Either<Self, Self>

Converts self into a Left variant of Either<Self, Self> if into_left is true. Converts self into a Right variant of Either<Self, Self> otherwise. Read more
source§

fn into_either_with<F>(self, into_left: F) -> Either<Self, Self>
where F: FnOnce(&Self) -> bool,

Converts self into a Left variant of Either<Self, Self> if into_left(&self) returns true. Converts self into a Right variant of Either<Self, Self> otherwise. Read more
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