pub struct Error { /* private fields */ }
Expand description
The error type used by the library.
Errors generally form a chain, with higher-level errors typically
providing additional context for lower level ones. E.g., an IO error
such as file-not-found could be reported by a system level API (such
as std::fs::File::open
) and may be contextualized with the path
to the file attempted to be opened.
use std::fs::File;
use std::error::Error as _;
let path = "/does-not-exist";
let result = File::open(path).with_context(|| format!("failed to open {path}"));
let err = result.unwrap_err();
assert_eq!(err.to_string(), "failed to open /does-not-exist");
// Retrieve the underlying error.
let inner_err = err.source().unwrap();
assert!(inner_err.to_string().starts_with("No such file or directory"));
For convenient reporting, the Display
representation takes care of reporting the complete error chain when
the alternate flag is set:
// > failed to open /does-not-exist: No such file or directory (os error 2)
println!("{err:#}");
The Debug
representation similarly will print
the entire error chain, but will do so in a multi-line format:
// > Error: failed to open /does-not-exist
// >
// > Caused by:
// > No such file or directory (os error 2)
println!("{err:?}");
Implementations§
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)>
Returns the lower-level source of this error, if any. Read more
1.0.0 · Source§fn description(&self) -> &str
fn description(&self) -> &str
👎Deprecated since 1.42.0: use the Display impl or to_string()
Auto Trait Implementations§
impl Freeze for Error
impl !RefUnwindSafe for Error
impl Send for Error
impl Sync for Error
impl Unpin for Error
impl !UnwindSafe for Error
Blanket Implementations§
Source§impl<T> BorrowMut<T> for Twhere
T: ?Sized,
impl<T> BorrowMut<T> for Twhere
T: ?Sized,
Source§fn borrow_mut(&mut self) -> &mut T
fn borrow_mut(&mut self) -> &mut T
Mutably borrows from an owned value. Read more