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
impl Error
Utilities
Sourcepub fn error(&self) -> &(dyn Error + 'static)
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().
Sourcepub fn probable_cause(&self) -> &(dyn Error + 'static)
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.
Sourcepub fn iter_errors(&self) -> impl Iterator<Item = &(dyn Error + 'static)> + '_
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.
Sourcepub fn iter_errors_with_locations(
&self,
) -> impl Iterator<Item = DisplaySource<'_>> + '_
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.
Sourcepub fn can_retry(&self) -> bool
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::Errorwith kindInterrupted,UnexpectedEof,OutOfMemory,TimedOut,BrokenPipe,AddrInUse,ConnectionAborted,ConnectionReset, orConnectionRefused.
Nested Error values are inspected recursively. false only means that no known retryable error was
found; it does not guarantee that retrying cannot succeed.
Sourcepub fn is_corrupted(&self) -> bool
pub fn is_corrupted(&self) -> bool
Return true if malformed or internally inconsistent data caused the failure.
Sourcepub fn is_not_found(&self) -> bool
pub fn is_not_found(&self) -> bool
Return true if a requested resource was not found.
Sourcepub fn is_validation(&self) -> bool
pub fn is_validation(&self) -> bool
Return true if invalid input caused the failure.
Trait Implementations§
Source§impl Error for Error
impl Error for Error
Source§fn source(&self) -> Option<&(dyn Error + 'static)>
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
fn description(&self) -> &str
use the Display impl or to_string()