Scope in std::thread - Rust
Description: A scope to spawn scoped threads in.

## Scope

# Struct Scope

1.63.0 · Source

    pub struct Scope<'scope, 'env: 'scope> { /* private fields */ }

Expand description

A scope to spawn scoped threads in.

See `scope` for details.

## Implementations§

Source§

### impl<'scope, 'env> Scope<'scope, 'env>

1.63.0 · Source

#### pub fn spawn<F, T>(&'scope self, f: F) -> ScopedJoinHandle<'scope, T>
where F: FnOnce() -> T + Send + 'scope, T: Send + 'scope,

Spawns a new thread within a scope, returning a `ScopedJoinHandle` for it.

Unlike non-scoped threads, threads spawned with this function may borrow non-`'static` data from the outside the scope. See `scope` for details.

The join handle provides a `join` method that can be used to join the spawned thread. If the spawned thread panics, `join` will return an `Err` containing the panic payload.

If the join handle is dropped, the spawned thread will be implicitly joined at the end of the scope. In that case, if the spawned thread panics, `scope` will panic after all threads are joined.

This function creates a thread with the default parameters of `Builder`. To specify the new thread’s stack size or the name, use `Builder::spawn_scoped`.

##### §Panics

Panics if the OS fails to create a thread; use `Builder::spawn_scoped` to recover from such errors.

## Trait Implementations§

1.63.0 · Source§

### impl Debug for Scope<'_, '_>

Source§

#### fn fmt(&self, f: &mut Formatter<'_>) -> Result

Formats the value using the given formatter. Read more

## Auto Trait Implementations§

§

### impl<'scope, 'env> Freeze for Scope<'scope, 'env>

§

### impl<'scope, 'env> RefUnwindSafe for Scope<'scope, 'env>

§

### impl<'scope, 'env> Send for Scope<'scope, 'env>

§

### impl<'scope, 'env> Sync for Scope<'scope, 'env>

§

### impl<'scope, 'env> Unpin for Scope<'scope, 'env>

§

### impl<'scope, 'env> !UnwindSafe for Scope<'scope, 'env>

## Blanket Implementations§

Source§

### impl<T> Any for T
where T: 'static + ?Sized,

Source§

#### fn type_id(&self) -> TypeId

Gets the `TypeId` of `self`. Read more
Source§

### impl<T> Borrow<T> for T
where T: ?Sized,

Source§

#### fn borrow(&self) -> &T

Immutably borrows from an owned value. Read more
Source§

### impl<T> BorrowMut<T> for T
where T: ?Sized,

Source§

#### fn borrow_mut(&mut self) -> &mut T

Mutably borrows from an owned value. Read more
Source§

### impl<T> From<T> for T

Source§

#### fn from(t: T) -> T

Returns the argument unchanged.

Source§

### impl<T, U> Into<U> for T
where U: From<T>,

Source§

#### fn into(self) -> U

Calls `U::from(self)`.

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

Source§

### impl<T, U> TryFrom<U> for T
where U: Into<T>,

Source§

#### type Error = Infallible

The type returned in the event of a conversion error.
Source§

#### fn try_from(value: U) -> Result<T, <T as TryFrom<U>>::Error>

Performs the conversion.
Source§

### impl<T, U> TryInto<U> for T
where U: TryFrom<T>,

Source§

#### type Error = <U as TryFrom<T>>::Error

The type returned in the event of a conversion error.
Source§

#### fn try_into(self) -> Result<U, <U as TryFrom<T>>::Error>

Performs the conversion.