pub trait SpawnBlocking<R>where
R: Send + 'static,{
// Required methods
fn spawn_blocking<F>(&self, f: F) -> BlockingHandle<R> ⓘ
where F: FnOnce() -> R + Send + 'static,
Self: Sized;
fn spawn_blocking_dyn(
&self,
f: Box<dyn FnOnce() -> R + Send>,
) -> BlockingHandle<R> ⓘ;
}Expand description
Indicate the executor can provide a threadpool for blocking operations. There is two methods of this trait. One of them requires boxing the closure and the other is not object safe.
Required Methods§
Sourcefn spawn_blocking<F>(&self, f: F) -> BlockingHandle<R> ⓘ
fn spawn_blocking<F>(&self, f: F) -> BlockingHandle<R> ⓘ
Runs the provided closure on a thread where blocking is acceptable.
Sourcefn spawn_blocking_dyn(
&self,
f: Box<dyn FnOnce() -> R + Send>,
) -> BlockingHandle<R> ⓘ
fn spawn_blocking_dyn( &self, f: Box<dyn FnOnce() -> R + Send>, ) -> BlockingHandle<R> ⓘ
Runs the provided closure on a thread where blocking is acceptable. This part of the trait is object safe but your closure must be boxed and you cannot have a return value.
Implementations on Foreign Types§
Source§impl<R, T> SpawnBlocking<R> for &Twhere
T: SpawnBlocking<R>,
R: Send + 'static,
impl<R, T> SpawnBlocking<R> for &Twhere
T: SpawnBlocking<R>,
R: Send + 'static,
fn spawn_blocking<F>(&self, f: F) -> BlockingHandle<R> ⓘ
fn spawn_blocking_dyn( &self, f: Box<dyn FnOnce() -> R + Send>, ) -> BlockingHandle<R> ⓘ
Source§impl<R, T> SpawnBlocking<R> for &mut Twhere
T: SpawnBlocking<R>,
R: Send + 'static,
impl<R, T> SpawnBlocking<R> for &mut Twhere
T: SpawnBlocking<R>,
R: Send + 'static,
fn spawn_blocking<F>(&self, f: F) -> BlockingHandle<R> ⓘ
fn spawn_blocking_dyn( &self, f: Box<dyn FnOnce() -> R + Send>, ) -> BlockingHandle<R> ⓘ
Source§impl<R, T> SpawnBlocking<R> for Box<T>where
T: SpawnBlocking<R>,
R: Send + 'static,
impl<R, T> SpawnBlocking<R> for Box<T>where
T: SpawnBlocking<R>,
R: Send + 'static,
fn spawn_blocking<F>(&self, f: F) -> BlockingHandle<R> ⓘ
fn spawn_blocking_dyn( &self, f: Box<dyn FnOnce() -> R + Send>, ) -> BlockingHandle<R> ⓘ
Source§impl<R, T> SpawnBlocking<R> for Rc<T>where
T: SpawnBlocking<R>,
R: Send + 'static,
impl<R, T> SpawnBlocking<R> for Rc<T>where
T: SpawnBlocking<R>,
R: Send + 'static,
fn spawn_blocking<F>(&self, f: F) -> BlockingHandle<R> ⓘ
fn spawn_blocking_dyn( &self, f: Box<dyn FnOnce() -> R + Send>, ) -> BlockingHandle<R> ⓘ
Source§impl<R, T> SpawnBlocking<R> for Arc<T>where
T: SpawnBlocking<R>,
R: Send + 'static,
impl<R, T> SpawnBlocking<R> for Arc<T>where
T: SpawnBlocking<R>,
R: Send + 'static,
fn spawn_blocking<F>(&self, f: F) -> BlockingHandle<R> ⓘ
fn spawn_blocking_dyn( &self, f: Box<dyn FnOnce() -> R + Send>, ) -> BlockingHandle<R> ⓘ
Implementors§
impl<R: Send + 'static> SpawnBlocking<R> for AsyncStd
Available on crate feature
async_std and non-WebAssembly only.impl<R: Send + 'static> SpawnBlocking<R> for TokioTp
Available on crate feature
tokio_tp only.