Struct std::io::Error 1.0.0[−][src]
pub struct Error { /* fields omitted */ }
Expand description
Implementations
返回此错误表示的操作系统错误 (如果有)。
如果此 Error
是通过 last_os_error
或 from_raw_os_error
构造的,则此函数将返回 Some
,否则它将返回 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() { // 将打印 "raw OS error: ..."。 print_os_error(&Error::last_os_error()); // 将打印 "Not an OS error"。 print_os_error(&Error::new(ErrorKind::Other, "oh no!")); }Run
返回对此错误包装的内部错误 (如果有) 的引用。
如果此 Error
是通过 new
构造的,则此函数将返回 Some
,否则它将返回 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() { // 将打印 "No inner error"。 print_error(&Error::last_os_error()); // 将打印 "Inner error: ..."。 print_error(&Error::new(ErrorKind::Other, "oh no!")); }Run
返回对此错误包装的内部错误的可变引用 (如果有)。
如果此 Error
是通过 new
构造的,则此函数将返回 Some
,否则它将返回 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() { // 将打印 "No inner error"。 print_error(&change_error(Error::last_os_error())); // 将打印 "Inner error: ..."。 print_error(&change_error(Error::new(ErrorKind::Other, MyError::new()))); }Run
消耗 Error
,并返回其内部错误 (如果有)。
如果此 Error
是通过 new
构造的,则此函数将返回 Some
,否则它将返回 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() { // 将打印 "No inner error"。 print_error(Error::last_os_error()); // 将打印 "Inner error: ..."。 print_error(Error::new(ErrorKind::Other, "oh no!")); }Run
Trait Implementations
👎 Deprecated since 1.42.0:
use the Display impl or to_string()
👎 Deprecated since 1.33.0:
replaced by Error::source, which can support downcasting
旨在用于未暴露给用户的错误,因为分配到堆上 (通过 Error::new 进行常规构建) 的代价太高了。
执行转换。