std::thread

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§

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