MST

星途 面试题库

面试题:Rust线程错误恢复中的`Result`类型运用

假设你正在编写一个多线程程序,其中一个线程负责从文件读取数据并进行处理,这个操作可能会失败。请用Rust代码展示如何使用`Result`类型来处理这个线程中的错误,并将错误信息正确传递到主线程,同时确保其他线程不受影响。
42.9万 热度难度
编程语言Rust

知识考点

AI 面试

面试题答案

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

fn read_and_process_file() -> Result<String, io::Error> {
    let mut file = File::open("example.txt")?;
    let mut contents = String::new();
    file.read_to_string(&mut contents)?;
    // 这里添加数据处理逻辑
    Ok(contents)
}

fn main() {
    let handle = thread::spawn(|| {
        read_and_process_file()
    });

    match handle.join() {
        Ok(result) => match result {
            Ok(data) => println!("处理结果: {}", data),
            Err(err) => eprintln!("文件读取或处理错误: {}", err),
        },
        Err(err) => eprintln!("线程发生恐慌: {}", err),
    }
}