Skip to main content

Error

Struct Error 

Source
pub struct Error<E> { /* private fields */ }
Expand description

An error container.

Error<E> is a lightweight handle to an error that can be cheaply cloned and safely shared across threads. It preserves the original error along with associated context such as where it occurred.

Implementations§

Source§

impl<E> Error<E>

Source

pub fn new<T>(error: T, service: &'static str) -> Self
where E: From<T>,

Creates a new error container.

Captures the caller location and associates the error with a service.

Source

pub fn forward<U, F>(self, f: F) -> Error<U>
where F: FnOnce(Error<E>) -> U,

Transforms the inner error into another error type.

Preserves service, backtrace, and extension data.

Source

pub fn debug(&self) -> impl Debug
where E: Debug,

Returns a debug view of the error.

Intended for debugging purposes.

Source

pub fn get_item<T: 'static>(&self) -> Option<&T>

Returns a reference to a previously stored value of type T from this error.

This can be used to access additional contextual data attached to the error.

Source§

impl<E: Clone> Error<E>

Source

pub fn set_tag<T: Into<Bytes>>(self, tag: T) -> Self

Sets a user-defined tag on this error.

Returns the updated error.

Source

pub fn set_service(self, name: &'static str) -> Self

Sets the service responsible for this error.

Returns the updated error.

Source

pub fn map<U, F>(self, f: F) -> Error<U>
where F: FnOnce(E) -> U,

Maps the inner error into a new error type.

Preserves service, backtrace, and extension data.

Source

pub fn try_map<T, U, F>(self, f: F) -> Result<T, Error<U>>
where F: FnOnce(E) -> Result<T, U>,

Try to map inner error to new error.

Preserves service, backtrace, and extension data.

Source

pub fn insert_item<T: Sync + Send + 'static>(self, val: T) -> Self

Attaches a typed value to this Error.

This value can be retrieved later using get_item::<T>().

Source§

impl<E: Clone> Error<E>

Source

pub fn into_error(self) -> E

Consumes this error and returns the inner error value.

Trait Implementations§

Source§

impl<E> Clone for Error<E>

Source§

fn clone(&self) -> Error<E>

Returns a duplicate of the value. Read more
1.0.0 · Source§

fn clone_from(&mut self, source: &Self)

Performs copy-assignment from source. Read more
Source§

impl<E: Debug> Debug for Error<E>

Source§

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

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

impl<E> Deref for Error<E>

Source§

type Target = E

The resulting type after dereferencing.
Source§

fn deref(&self) -> &E

Dereferences the value.
Source§

impl<E: Display> Display for Error<E>

Source§

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

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

impl<E: Error + 'static> Error for Error<E>

Source§

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

Returns the lower-level source of this error, if any. Read more
1.0.0 · Source§

fn description(&self) -> &str

👎Deprecated since 1.42.0:

use the Display impl or to_string()

1.0.0 · Source§

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

👎Deprecated since 1.33.0:

replaced by Error::source, which can support downcasting

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<E: ErrorDiagnostic> ErrorDiagnostic for Error<E>

Source§

type Kind = <E as ErrorDiagnostic>::Kind

Source§

fn kind(&self) -> Self::Kind

Returns the classification kind of this error.
Source§

fn tag(&self) -> Option<&Bytes>

Returns an optional tag associated with this error. Read more
Source§

fn service(&self) -> Option<&'static str>

Returns the name of the responsible service, if applicable. Read more
Source§

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

Returns a backtrace for debugging purposes, if available.
Source§

fn chain(self) -> ErrorChain<Self::Kind>
where Self: Sized,

Source§

impl<E> From<&Error<E>> for ErrorInfo
where E: ErrorDiagnostic,

Source§

fn from(err: &Error<E>) -> Self

Converts to this type from the input type.
Source§

impl<E> From<E> for Error<E>

Source§

fn from(error: E) -> Self

Converts to this type from the input type.
Source§

impl<E, K> From<Error<E>> for ErrorChain<K>
where E: ErrorDiagnostic<Kind = K> + Sized, K: ResultKind,

Source§

fn from(err: Error<E>) -> Self

Converts to this type from the input type.
Source§

impl<E> From<Error<E>> for ErrorInfo
where E: ErrorDiagnostic,

Source§

fn from(err: Error<E>) -> Self

Converts to this type from the input type.
Source§

impl<E> PartialEq<E> for Error<E>
where E: PartialEq,

Source§

fn eq(&self, other: &E) -> bool

Tests for self and other values to be equal, and is used by ==.
1.0.0 · Source§

fn ne(&self, other: &Rhs) -> bool

Tests for !=. The default implementation is almost always sufficient, and should not be overridden without very good reason.
Source§

impl<E> PartialEq for Error<E>
where E: PartialEq,

Source§

fn eq(&self, other: &Self) -> bool

Tests for self and other values to be equal, and is used by ==.
1.0.0 · Source§

fn ne(&self, other: &Rhs) -> bool

Tests for !=. The default implementation is almost always sufficient, and should not be overridden without very good reason.
Source§

impl<E> Eq for Error<E>
where E: Eq,

Auto Trait Implementations§

§

impl<E> Freeze for Error<E>

§

impl<E> !RefUnwindSafe for Error<E>

§

impl<E> Send for Error<E>
where E: Sync + Send,

§

impl<E> Sync for Error<E>
where E: Sync + Send,

§

impl<E> Unpin for Error<E>

§

impl<E> UnsafeUnpin for Error<E>

§

impl<E> !UnwindSafe for Error<E>

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> CloneToUninit for T
where T: Clone,

Source§

unsafe fn clone_to_uninit(&self, dest: *mut u8)

🔬This is a nightly-only experimental API. (clone_to_uninit)
Performs copy-assignment from self to dest. Read more
Source§

impl<T> From<!> for T

Source§

fn from(t: !) -> T

Converts to this type from the input type.
Source§

impl<T> From<T> for T

Source§

fn from(t: T) -> T

Returns the argument unchanged.

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<P, T> Receiver for P
where P: Deref<Target = T> + ?Sized, T: ?Sized,

Source§

type Target = T

🔬This is a nightly-only experimental API. (arbitrary_self_types)
The target type on which the method may be called.
Source§

impl<T> ToOwned for T
where T: Clone,

Source§

type Owned = T

The resulting type after obtaining ownership.
Source§

fn to_owned(&self) -> T

Creates owned data from borrowed data, usually by cloning. Read more
Source§

fn clone_into(&self, target: &mut T)

Uses borrowed data to replace owned data, usually by cloning. Read more
Source§

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

Source§

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>,

Source§

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>,

Source§

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.