面试题答案
一键面试Result类型基本结构
Result
是一个枚举类型,定义在标准库中,用于处理可能成功或失败的操作。其定义如下:
enum Result<T, E> {
Ok(T),
Err(E),
}
其中,T
表示成功时返回的值的类型,E
表示失败时返回的错误的类型。
示例:处理文件读取时的IO错误
假设我们要从文件中读取数据,这可能会因为文件不存在、权限问题等产生 io::Error
。下面是一个示例代码:
use std::fs::File;
use std::io::{self, Read};
fn read_file_content(file_path: &str) -> Result<String, io::Error> {
let mut file = File::open(file_path)?;
let mut content = String::new();
file.read_to_string(&mut content)?;
Ok(content)
}
fn main() {
match read_file_content("example.txt") {
Ok(content) => println!("文件内容: {}", content),
Err(error) => eprintln!("读取文件时出错: {}", error),
}
}
在 read_file_content
函数中:
File::open(file_path)
尝试打开文件,如果失败,会返回Err(io::Error)
,?
运算符会直接将这个错误返回给调用者。file.read_to_string(&mut content)
尝试读取文件内容到content
中,如果失败,同样会返回Err(io::Error)
,?
运算符将错误返回。- 如果所有操作都成功,函数返回
Ok(content)
,即文件的内容。
在 main
函数中,使用 match
表达式来处理 read_file_content
的返回值,根据成功或失败执行不同的逻辑。