本文简要介绍rust语言中 std::io::Error.get_mut 的用法。
用法
pub fn get_mut(&mut self) -> Option<&mut (dyn Error + Send + Sync + 'static)>返回对此错误包装的内部错误的可变引用(如果有)。
如果此  Error  是通过  new  构造的,则此函数将返回  Some  ,否则将返回  None  。
例子
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())));
}相关用法
- Rust Error.get_ref用法及代码示例
- Rust Error.source用法及代码示例
- Rust Error.last_os_error用法及代码示例
- Rust Error.chain用法及代码示例
- Rust Error.description用法及代码示例
- Rust Error.kind用法及代码示例
- Rust Error.from_raw_os_error用法及代码示例
- Rust Error.into_inner用法及代码示例
- Rust Error.new用法及代码示例
- Rust Error.raw_os_error用法及代码示例
- Rust Error用法及代码示例
- Rust Entry.or_insert_with用法及代码示例
- Rust ExitStatus.code用法及代码示例
- Rust Eq用法及代码示例
- Rust Entry.or_insert用法及代码示例
- Rust ExactSizeIterator.is_empty用法及代码示例
- Rust Extend.extend用法及代码示例
- Rust Entry.and_modify用法及代码示例
- Rust ExitStatusError.code用法及代码示例
- Rust ExactSizeIterator用法及代码示例
- Rust ExitStatusError用法及代码示例
- Rust ExitStatus.exit_ok用法及代码示例
- Rust Entry.or_insert_with_key用法及代码示例
- Rust Entry.key用法及代码示例
- Rust Entry.or_default用法及代码示例
注:本文由纯净天空筛选整理自rust-lang.org大神的英文原创作品 std::io::Error.get_mut。非经特殊声明,原始代码版权归原作者所有,本译文未经允许或授权,请勿转载或复制。
