MST

星途 面试题库

面试题:Rust异常处理中模式匹配的复杂场景

假设你有一个包含多种类型错误的`enum`,如下:`enum MyError { FileNotFound, PermissionDenied, ParseError(String) }`,同时有一个返回`Result<(), MyError>`的函数`fn process_file() -> Result<(), MyError>`。在`process_file`函数内部,如果是文件不存在错误,尝试创建文件;如果是权限不足错误,打印提示信息并尝试请求权限;如果是解析错误,打印具体的错误字符串。请通过模式匹配完成上述逻辑。
20.9万 热度难度
编程语言Rust

知识考点

AI 面试

面试题答案

一键面试
fn process_file() -> Result<(), MyError> {
    // 这里假设先模拟产生一个错误,实际应用中应该是在函数内部处理逻辑时产生错误
    let err = MyError::FileNotFound;
    match err {
        MyError::FileNotFound => {
            // 尝试创建文件
            println!("尝试创建文件");
            // 这里创建文件成功就返回 Ok(()),失败返回对应的错误,这里简单返回 Ok(()) 模拟成功
            Ok(())
        }
        MyError::PermissionDenied => {
            // 打印提示信息并尝试请求权限
            println!("权限不足,尝试请求权限");
            // 这里请求权限成功就返回 Ok(()),失败返回对应的错误,这里简单返回 Ok(()) 模拟成功
            Ok(())
        }
        MyError::ParseError(err_str) => {
            // 打印具体的错误字符串
            println!("解析错误: {}", err_str);
            Err(MyError::ParseError(err_str))
        }
    }
}

enum MyError {
    FileNotFound,
    PermissionDenied,
    ParseError(String)
}