Type Definition std::thread::Result

type Result<T> = Result<T, Box<dyn Any + Send + 'static>>;

A specialized Result type for threads.

Indicates the manner in which a thread exited.

The value contained in the Result::Err variant is the value the thread panicked with; that is, the argument the panic! macro was called with. Unlike with normal errors, this value doesn't implement the Error trait.

Thus, a sensible way to handle a thread panic is to either:

  1. unwrap the Result<T>, propagating the panic
  2. or in case the thread is intended to be a subsystem boundary that is supposed to isolate system-level failures, match on the Err variant and handle the panic in an appropriate way.

A thread that completes without panicking is considered to exit successfully.


use std::thread;
use std::fs;

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

fn main() {
    match copy_in_thread() {
        Ok(_) => println!("this is fine"),
        Err(_) => println!("thread panicked"),

© 2010 The Rust Project Developers
Licensed under the Apache License, Version 2.0 or the MIT license, at your option.