MST

星途 面试题库

面试题:Rust中Option和Result在复杂场景下的设计与优化

设计一个Rust程序模拟文件读取与解析过程。有一个函数`read_file`返回`Result<String, io::Error>`表示文件读取结果,读取成功返回文件内容字符串。另一个函数`parse_file`接收文件内容字符串返回`Result<Vec<u32>, String>`表示解析结果,解析成功返回解析后的`u32`向量。在主函数中调用这两个函数,要求在处理`Option`和`Result`时尽可能优化错误处理和代码结构,考虑如何避免过多的嵌套`match`或`if let`,并在错误发生时提供清晰的错误信息给调用者。
26.9万 热度难度
编程语言Rust

知识考点

AI 面试

面试题答案

一键面试
use std::fs::File;
use std::io::{self, Read};

fn read_file(file_path: &str) -> Result<String, io::Error> {
    let mut file = File::open(file_path)?;
    let mut contents = String::new();
    file.read_to_string(&mut contents)?;
    Ok(contents)
}

fn parse_file(contents: &str) -> Result<Vec<u32>, String> {
    contents
      .lines()
      .map(|line| line.parse::<u32>().map_err(|e| format!("Failed to parse line '{}': {}", line, e)))
      .collect()
}

fn main() {
    let file_path = "example.txt";
    let result = read_file(file_path)
      .and_then(parse_file);

    match result {
        Ok(numbers) => println!("Parsed numbers: {:?}", numbers),
        Err(e) => eprintln!("Error: {}", e),
    }
}