面试题答案
一键面试在Rust中,可以这样定义包含Result
类型字段的结构体来处理富错误场景:
use std::io;
struct FileOperationResult {
data: Result<String, io::Error>,
}
impl FileOperationResult {
fn new(file_path: &str) -> Self {
let data = std::fs::read_to_string(file_path);
FileOperationResult { data }
}
}
fn main() {
let result = FileOperationResult::new("nonexistent_file.txt");
match result.data {
Ok(content) => println!("File content: {}", content),
Err(e) => println!("Error: {}", e),
}
}
在上述代码中:
- 首先引入了
std::io
模块,用于处理IO错误。 - 定义了
FileOperationResult
结构体,它有一个data
字段,类型为Result<String, io::Error>
,String
表示成功读取文件后的内容,io::Error
表示文件读取过程中可能出现的IO错误。 - 为
FileOperationResult
结构体实现了一个new
方法,该方法接受一个文件路径字符串,尝试读取文件内容并将结果保存在data
字段中。 - 在
main
函数中,创建了FileOperationResult
实例并通过match
语句处理Result
类型的data
字段,根据结果进行相应的输出。