pub struct Error { /* private fields */ }Expand description
Implementations
impl Error
source
impl Error
sourcepub fn new<E>(kind: ErrorKind, error: E) -> Error where
E: Into<Box<dyn Error + Send + Sync>>,
source
pub fn new<E>(kind: ErrorKind, error: E) -> Error where
E: Into<Box<dyn Error + Send + Sync>>,
sourceCreates a new I/O error from a known kind of error as well as an arbitrary error payload.
This function is used to generically create I/O errors which do not
originate from the OS itself. The error argument is an arbitrary
payload which will be contained in this Error.
If no extra payload is required, use the From conversion from
ErrorKind.
Examples
use std::io::{Error, ErrorKind};
// errors can be created from strings
let custom_error = Error::new(ErrorKind::Other, "oh no!");
// errors can also be created from other errors
let custom_error2 = Error::new(ErrorKind::Interrupted, custom_error);
// creating an error without payload
let eof_error = Error::from(ErrorKind::UnexpectedEof);Runpub fn other<E>(error: E) -> Error where
E: Into<Box<dyn Error + Send + Sync>>,
source
pub fn other<E>(error: E) -> Error where
E: Into<Box<dyn Error + Send + Sync>>,
sourceCreates a new I/O error from an arbitrary error payload.
This function is used to generically create I/O errors which do not
originate from the OS itself. It is a shortcut for Error::new
with ErrorKind::Other.
Examples
#![feature(io_error_other)]
use std::io::Error;
// errors can be created from strings
let custom_error = Error::other("oh no!");
// errors can also be created from other errors
let custom_error2 = Error::other(custom_error);Runpub fn last_os_error() -> Error
source
pub fn last_os_error() -> Error
sourceReturns an error representing the last OS error which occurred.
This function reads the value of errno for the target platform (e.g.
GetLastError on Windows) and will return a corresponding instance of
Error for the error code.
This should be called immediately after a call to a platform function, otherwise the state of the error value is indeterminate. In particular, other standard library functions may call platform functions that may (or may not) reset the error value even if they succeed.
Examples
use std::io::Error;
let os_error = Error::last_os_error();
println!("last OS error: {os_error:?}");Runpub fn from_raw_os_error(code: i32) -> Error
source
pub fn from_raw_os_error(code: i32) -> Error
sourceCreates a new instance of an Error from a particular OS error code.
Examples
On Linux:
use std::io;
let error = io::Error::from_raw_os_error(22);
assert_eq!(error.kind(), io::ErrorKind::InvalidInput);RunOn Windows:
use std::io;
let error = io::Error::from_raw_os_error(10022);
assert_eq!(error.kind(), io::ErrorKind::InvalidInput);Runpub fn raw_os_error(&self) -> Option<i32>
source
pub fn raw_os_error(&self) -> Option<i32>
sourceReturns the OS error that this error represents (if any).
If this Error was constructed via last_os_error or
from_raw_os_error, then this function will return Some, otherwise
it will return None.
Examples
use std::io::{Error, ErrorKind};
fn print_os_error(err: &Error) {
if let Some(raw_os_err) = err.raw_os_error() {
println!("raw OS error: {raw_os_err:?}");
} else {
println!("Not an OS error");
}
}
fn main() {
// Will print "raw OS error: ...".
print_os_error(&Error::last_os_error());
// Will print "Not an OS error".
print_os_error(&Error::new(ErrorKind::Other, "oh no!"));
}Runpub fn get_ref(&self) -> Option<&(dyn Error + Send + Sync + 'static)>
1.3.0 · source
pub fn get_ref(&self) -> Option<&(dyn Error + Send + Sync + 'static)>
1.3.0 · sourceReturns a reference to the inner error wrapped by this error (if any).
If this Error was constructed via new then this function will
return Some, otherwise it will return None.
Examples
use std::io::{Error, ErrorKind};
fn print_error(err: &Error) {
if let Some(inner_err) = err.get_ref() {
println!("Inner error: {inner_err:?}");
} else {
println!("No inner error");
}
}
fn main() {
// Will print "No inner error".
print_error(&Error::last_os_error());
// Will print "Inner error: ...".
print_error(&Error::new(ErrorKind::Other, "oh no!"));
}Runpub fn get_mut(&mut self) -> Option<&mut (dyn Error + Send + Sync + 'static)>
1.3.0 · source
pub fn get_mut(&mut self) -> Option<&mut (dyn Error + Send + Sync + 'static)>
1.3.0 · sourceReturns a mutable reference to the inner error wrapped by this error (if any).
If this Error was constructed via new then this function will
return Some, otherwise it will return None.
Examples
use std::io::{Error, ErrorKind};
use std::{error, fmt};
use std::fmt::Display;
#[derive(Debug)]
struct MyError {
v: String,
}
impl MyError {
fn new() -> MyError {
MyError {
v: "oh no!".to_string()
}
}
fn change_message(&mut self, new_message: &str) {
self.v = new_message.to_string();
}
}
impl error::Error for MyError {}
impl Display for MyError {
fn fmt(&self, f: &mut fmt::Formatter<'_>) -> fmt::Result {
write!(f, "MyError: {}", &self.v)
}
}
fn change_error(mut err: Error) -> Error {
if let Some(inner_err) = err.get_mut() {
inner_err.downcast_mut::<MyError>().unwrap().change_message("I've been changed!");
}
err
}
fn print_error(err: &Error) {
if let Some(inner_err) = err.get_ref() {
println!("Inner error: {inner_err}");
} else {
println!("No inner error");
}
}
fn main() {
// Will print "No inner error".
print_error(&change_error(Error::last_os_error()));
// Will print "Inner error: ...".
print_error(&change_error(Error::new(ErrorKind::Other, MyError::new())));
}Runpub fn into_inner(self) -> Option<Box<dyn Error + Send + Sync>>
1.3.0 · source
pub fn into_inner(self) -> Option<Box<dyn Error + Send + Sync>>
1.3.0 · sourceConsumes the Error, returning its inner error (if any).
If this Error was constructed via new then this function will
return Some, otherwise it will return None.
Examples
use std::io::{Error, ErrorKind};
fn print_error(err: Error) {
if let Some(inner_err) = err.into_inner() {
println!("Inner error: {inner_err}");
} else {
println!("No inner error");
}
}
fn main() {
// Will print "No inner error".
print_error(Error::last_os_error());
// Will print "Inner error: ...".
print_error(Error::new(ErrorKind::Other, "oh no!"));
}Runpub fn kind(&self) -> ErrorKind
source
pub fn kind(&self) -> ErrorKind
sourceReturns the corresponding ErrorKind for this error.
Examples
use std::io::{Error, ErrorKind};
fn print_error(err: Error) {
println!("{:?}", err.kind());
}
fn main() {
// Will print "Uncategorized".
print_error(Error::last_os_error());
// Will print "AddrInUse".
print_error(Error::new(ErrorKind::AddrInUse, "oh no!"));
}RunTrait Implementations
impl Error for Error
source
impl Error for Error
sourcefn description(&self) -> &str
source
fn description(&self) -> &str
sourceuse the Display impl or to_string()
fn cause(&self) -> Option<&dyn Error>
source
fn cause(&self) -> Option<&dyn Error>
sourcereplaced by Error::source, which can support downcasting
impl From<ErrorKind> for Error
1.14.0 · source
impl From<ErrorKind> for Error
1.14.0 · sourceIntended for use for errors not exposed to the user, where allocating onto the heap (for normal construction via Error::new) is too costly.
impl<W> From<IntoInnerError<W>> for Error
source
impl<W> From<IntoInnerError<W>> for Error
sourcefn from(iie: IntoInnerError<W>) -> Error
source
fn from(iie: IntoInnerError<W>) -> Error
sourceConverts to this type from the input type.
Auto Trait Implementations
impl !RefUnwindSafe for Error
impl Send for Error
impl Sync for Error
impl Unpin for Error
impl !UnwindSafe for Error
Blanket Implementations
impl<T> BorrowMut<T> for T where
T: ?Sized,
source
impl<T> BorrowMut<T> for T where
T: ?Sized,
sourcefn borrow_mut(&mut self) -> &mut T
const: unstable · source
fn borrow_mut(&mut self) -> &mut T
const: unstable · sourceMutably borrows from an owned value. Read more