Struct std::thread::Thread

1.0.0 · source · []
pub struct Thread { /* private fields */ }
Expand description

A handle to a thread.

Threads are represented via the Thread type, which you can get in one of two ways:

The thread::current function is available even for threads not spawned by the APIs of this module.

There is usually no need to create a Thread struct yourself, one should instead use a function like spawn to create new threads, see the docs of Builder and spawn for more details.


Atomically makes the handle’s token available if it is not already.

Every thread is equipped with some basic low-level blocking support, via the park function and the unpark() method. These can be used as a more CPU-efficient implementation of a spinlock.

See the park documentation for more details.

use std::thread;
use std::time::Duration;

let parked_thread = thread::Builder::new()
    .spawn(|| {
        println!("Parking thread");
        println!("Thread unparked");

// Let some time pass for the thread to be spawned.

println!("Unpark the thread");


Gets the thread’s unique identifier.

use std::thread;

let other_thread = thread::spawn(|| {

let other_thread_id = other_thread.join().unwrap();
assert!(thread::current().id() != other_thread_id);

Gets the thread’s name.

For more information about named threads, see this module-level documentation.


Threads by default have no name specified:

use std::thread;

let builder = thread::Builder::new();

let handler = builder.spawn(|| {


Thread with a specified name:

use std::thread;

let builder = thread::Builder::new()

let handler = builder.spawn(|| {
    assert_eq!(thread::current().name(), Some("foo"))


Trait Implementations

Returns a copy of the value. Read more

Performs copy-assignment from source. Read more

Formats the value using the given formatter. Read more

Auto Trait Implementations

Blanket Implementations

Gets the TypeId of self. Read more

Immutably borrows from an owned value. Read more

Mutably borrows from an owned value. Read more

Returns the argument unchanged.

Calls U::from(self).

That is, this conversion is whatever the implementation of From<T> for U chooses to do.

The resulting type after obtaining ownership.

Creates owned data from borrowed data, usually by cloning. Read more

Uses borrowed data to replace owned data, usually by cloning. Read more

The type returned in the event of a conversion error.

Performs the conversion.

The type returned in the event of a conversion error.

Performs the conversion.