pub type Result<T> = Result<T, Box<dyn Any + Send + 'static>>;
Expand description
线程专用的 Result
的类型。
指示线程退出的方式。
Result::Err
变体中包含的值是线程 panic 时使用的值;
也就是说,调用了 panic!
宏的参数。
与正常错误不同,此值不实现 Error
trait。
因此,处理线程 panic 的明智方法是:
- 用
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