Type Definition std::thread::Result

1.0.0 · source ·
pub type Result<T> = Result<T, Box<dyn Any + Send + 'static>>;
Expand description

线程专用的 Result 的类型。

指示线程退出的方式。

Result::Err 变体中包含的值是线程 panic 时使用的值; 也就是说,调用了 panic! 宏的参数。 与正常错误不同,此值不实现 Error trait。

因此,处理线程 panic 的明智方法是:

  1. std::panic::resume_unwind 传播 panic

或者,如果线程是用来隔离系统级故障的子系统边界,则匹配 Err 变体,并以适当的方式处理 panic

一个线程在没有 panic 的情况下完成被认为是成功退出。

Examples

匹配已连接线程的结果:

use std::{fs, thread, panic};

fn copy_in_thread() -> thread::Result<()> {
    thread::spawn(|| {
        fs::copy("foo.txt", "bar.txt").unwrap();
    }).join()
}

fn main() {
    match copy_in_thread() {
        Ok(_) => println!("copy succeeded"),
        Err(e) => panic::resume_unwind(e),
    }
}
Run