Skip to main content

Error

Struct Error 

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

An error type that wraps an inner type-erased boxed std::error::Error or an Exn frame.

In that, it’s similar to anyhow, but with support for tracking the call site and trees of errors.

§Warning: source() information is stringified and type-erased

All source() values when created with Error::from_error() are turned into frames, but lose their type information completely. An existing Error is retained as a nested error instead. This is because they are only seen as reference and thus can’t be stored.

§The auto-chain-error feature

If it’s enabled, this type is merely a wrapper around ChainedError. This happens automatically so applications that require this don’t have to go through an extra conversion.

When both the tree-error and auto-chain-error features are enabled, the tree-error behavior takes precedence and this type uses the tree-based representation.

Implementations§

Source§

impl Error

Utilities

Source

pub fn error(&self) -> &(dyn Error + 'static)

Return the error stored at this error boundary.

This is the first error yielded by Self::iter_errors() and is distinct from Self::probable_cause().

Source

pub fn probable_cause(&self) -> &(dyn Error + 'static)

Return the error that is most likely the root cause, based on heuristics. Note that if there is nothing but this error, i.e. no source or children, this error is returned.

Source

pub fn iter_errors(&self) -> impl Iterator<Item = &(dyn Error + 'static)> + '_

Return the stored error and all frame errors and native sources reachable from it, recursively expanding nested Error values.

The first item is the error stored inside this Error, not this Error wrapper. Remaining errors are ordered logically breadth-first; a frame’s direct native source precedes its explicitly raised child frames. These are references to the underlying errors, so their concrete types remain available for downcasting and their own Display implementations can be used. Use Self::iter_errors_with_locations() to access caller locations.

Source

pub fn iter_errors_with_locations( &self, ) -> impl Iterator<Item = DisplaySource<'_>> + '_

Return the same errors as Self::iter_errors(), paired with their captured caller locations where available and in the same order.

Source

pub fn can_retry(&self) -> bool

Return true if any stored error, or an error in its source() chain, is:

  • explicitly marked with RetryableError, or
  • an std::io::Error with kind Interrupted, UnexpectedEof, OutOfMemory, TimedOut, BrokenPipe, AddrInUse, ConnectionAborted, ConnectionReset, or ConnectionRefused.

Nested Error values are inspected recursively. false only means that no known retryable error was found; it does not guarantee that retrying cannot succeed.

Source

pub fn is_corrupted(&self) -> bool

Return true if malformed or internally inconsistent data caused the failure.

Source

pub fn is_not_found(&self) -> bool

Return true if a requested resource was not found.

Source

pub fn is_validation(&self) -> bool

Return true if invalid input caused the failure.

Source§

impl Error

Source

pub fn from_error(error: impl Error + Send + Sync + 'static) -> Self

Create a new instance representing the given error.

Source

pub fn from_boxed(error: Box<dyn Error + Send + Sync + 'static>) -> Self

Create a new instance representing an already boxed error.

Source§

impl Error

Source

pub fn downcast_any_ref<T: Error + 'static>(&self) -> Option<&T>

Find the first stored error or native source that downcasts to T in logical breadth-first order.

Trait Implementations§

Source§

impl Debug for Error

Source§

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

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

impl Display for Error

Source§

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

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

impl Error for Error

Source§

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

Return the first source of an Exn error, or the source of a boxed error.

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> From<Exn<E>> for Error
where E: Error + Send + Sync + 'static,

Source§

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

Converts to this type from the input type.

Auto Trait Implementations§

§

impl !RefUnwindSafe for Error

§

impl !UnwindSafe for Error

§

impl Freeze for Error

§

impl Send for Error

§

impl Sync for Error

§

impl Unpin for Error

§

impl UnsafeUnpin for Error

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> ErrorExt for T
where T: Error + Send + Sync + 'static,

Source§

fn raise(self) -> Exn<Self>
where Self: Sized,

Raise this error as a new exception.
Source§

fn and_raise<T: Error + Send + Sync + 'static>(self, context: T) -> Exn<T>
where Self: Sized,

Raise this error as a child of a new exception with the given context error. Read more
Source§

fn raise_erased(self) -> Exn
where Self: Sized,

Raise this error as a new exception, with type erasure.
Source§

fn raise_all<T, I>(self, sources: I) -> Exn<Self>
where Self: Sized, T: Error + Send + Sync + 'static, I: IntoIterator, I::Item: Into<Exn<T>>,

Raise this error as a new exception, with sources as causes.
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<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.