Result in std::thread - Rust
Description: A specialized `Result` type for threads.

## Result

# Type Alias Result

1.0.0 · Source

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

Expand description

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. propagate the panic with `std::panic::resume_unwind`
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.

## §Examples

Matching on the result of a joined thread:

    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),
        }
    }

## Aliased Type§

    pub enum Result<T> {
        Ok(T),
        Err(Box<dyn Any + Send>),
    }

## Variants§

§1.0.0

### Ok(T)

Contains the success value

§1.0.0

### Err(Box<dyn Any + Send>)

Contains the error value