pub struct ScopeExecutor<'scope, E> { /* private fields */ }Expand description
An Executor wrapper that tracks spawned tasks so they can be
canceled when a scope ends.
ScopeExecutor itself implements Executor, so it can be passed to
any code that takes Executor every spawn performed through
that code will be tracked by the scope.
Because submitted futures must still be Send + 'static (enforced by
Executor::spawn), this flavour of scope does not allow borrowing
from the enclosing stack frame. Use scope for that.
Trait Implementations§
Source§impl<E> Drop for ScopeExecutor<'_, E>
impl<E> Drop for ScopeExecutor<'_, E>
Source§impl<'scope, E> Executor for ScopeExecutor<'scope, E>where
E: Executor,
impl<'scope, E> Executor for ScopeExecutor<'scope, E>where
E: Executor,
Source§fn runtime_type(&self) -> Option<&'static str>
fn runtime_type(&self) -> Option<&'static str>
Returns an optional runtime name of the executor.
Source§fn spawn<F>(&self, future: F) -> JoinHandle<F::Output> ⓘ
fn spawn<F>(&self, future: F) -> JoinHandle<F::Output> ⓘ
Spawns a new asynchronous task in the background, returning a Future
JoinHandle for it.Source§fn spawn_abortable<F>(&self, future: F) -> AbortableJoinHandle<F::Output> ⓘ
fn spawn_abortable<F>(&self, future: F) -> AbortableJoinHandle<F::Output> ⓘ
Spawns a new asynchronous task in the background, returning an abortable handle that will cancel the task
once the handle is dropped. Read more
Source§fn dispatch<F>(&self, future: F)
fn dispatch<F>(&self, future: F)
Spawns a new asynchronous task in the background without an handle.
Basically the same as
Executor::spawn.Source§fn spawn_coroutine<T, F, Fut>(&self, f: F) -> CommunicationTask<T>
fn spawn_coroutine<T, F, Fut>(&self, f: F) -> CommunicationTask<T>
Spawns a new asynchronous task that accepts messages to the task.
This function returns a handle that allows sending a message, or if there is no reference to the handle at all
(in other words, all handles are dropped), the task would be aborted.
Source§fn spawn_coroutine_with_buffer<T, F, Fut>(
&self,
buffer: usize,
f: F,
) -> CommunicationTask<T>
fn spawn_coroutine_with_buffer<T, F, Fut>( &self, buffer: usize, f: F, ) -> CommunicationTask<T>
Spawns a new asynchronous task that accepts messages to the task with a set buffer.
This function returns a handle that allows sending a message, or if there is no reference to the handle at all
(in other words, all handles are dropped), the task would be aborted.
Source§fn spawn_unbounded_coroutine<T, F, Fut>(
&self,
f: F,
) -> UnboundedCommunicationTask<T>
fn spawn_unbounded_coroutine<T, F, Fut>( &self, f: F, ) -> UnboundedCommunicationTask<T>
Spawns a new asynchronous task that accepts unbounded messages to the task.
This function returns a handle that allows sending a message, or if there is no reference to the handle at all
(in other words, all handles are dropped), the task would be aborted.
Source§fn spawn_coroutine_with_context<T, C, F, Fut>(
&self,
context: C,
f: F,
) -> CommunicationTask<T>
fn spawn_coroutine_with_context<T, C, F, Fut>( &self, context: C, f: F, ) -> CommunicationTask<T>
Spawns a new asynchronous task with provided context that accepts messages to the task.
This function returns a handle that allows sending a message, or if there is no reference to the handle at all
(in other words, all handles are dropped), the task would be aborted. Read more
Source§fn spawn_coroutine_with_buffer_and_context<T, C, F, Fut>(
&self,
context: C,
buffer: usize,
f: F,
) -> CommunicationTask<T>
fn spawn_coroutine_with_buffer_and_context<T, C, F, Fut>( &self, context: C, buffer: usize, f: F, ) -> CommunicationTask<T>
Spawns a new asynchronous task with provided context that accepts messages to the task with a set buffer.
This function returns a handle that allows sending a message, or if there is no reference to the handle at all
(in other words, all handles are dropped), the task would be aborted.
Source§fn spawn_unbounded_coroutine_with_context<T, C, F, Fut>(
&self,
context: C,
f: F,
) -> UnboundedCommunicationTask<T>
fn spawn_unbounded_coroutine_with_context<T, C, F, Fut>( &self, context: C, f: F, ) -> UnboundedCommunicationTask<T>
Spawns a new asynchronous task with provided context that accepts unbounded messages to the task.
This function returns a handle that allows sending a message, or if there is no reference to the handle at all
(in other words, all handles are dropped), the task would be aborted.
Source§fn spawn_coroutine_with_receiver<T, F, Fut>(&self, f: F) -> CommunicationTask<T>
fn spawn_coroutine_with_receiver<T, F, Fut>(&self, f: F) -> CommunicationTask<T>
Spawns a new asynchronous task that accepts messages to the task using
channels.
This function returns a handle that allows sending a message, or if there is no reference to the handle at all
(in other words, all handles are dropped), the task would be aborted.Source§fn spawn_coroutine_with_receiver_and_buffer<T, F, Fut>(
&self,
buffer: usize,
f: F,
) -> CommunicationTask<T>
fn spawn_coroutine_with_receiver_and_buffer<T, F, Fut>( &self, buffer: usize, f: F, ) -> CommunicationTask<T>
Spawns a new asynchronous task with a set channel buffer that accepts messages to the task using
channels.
This function returns a handle that allows sending a message, or if there is no reference to the handle at all
(in other words, all handles are dropped), the task would be aborted.Source§fn spawn_coroutine_with_receiver_and_context<T, F, C, Fut>(
&self,
context: C,
f: F,
) -> CommunicationTask<T>
fn spawn_coroutine_with_receiver_and_context<T, F, C, Fut>( &self, context: C, f: F, ) -> CommunicationTask<T>
Spawns a new asynchronous task with provided context that accepts messages to the task using
channels.
This function returns a handle that allows sending a message, or if there is no reference to the handle at all
(in other words, all handles are dropped), the task would be aborted.Source§fn spawn_coroutine_with_receiver_buffer_and_context<T, F, C, Fut>(
&self,
context: C,
buffer: usize,
f: F,
) -> CommunicationTask<T>
fn spawn_coroutine_with_receiver_buffer_and_context<T, F, C, Fut>( &self, context: C, buffer: usize, f: F, ) -> CommunicationTask<T>
Spawns a new asynchronous task with a set channel buffer and provided context that accepts messages to the task using
channels.
This function returns a handle that allows sending a message, or if there is no reference to the handle at all
(in other words, all handles are dropped), the task would be aborted.Source§fn spawn_unbounded_coroutine_with_receiver<T, F, Fut>(
&self,
f: F,
) -> UnboundedCommunicationTask<T>
fn spawn_unbounded_coroutine_with_receiver<T, F, Fut>( &self, f: F, ) -> UnboundedCommunicationTask<T>
Spawns a new asynchronous task that accepts messages to the task using
channels.
This function returns a handle that allows sending a message, or if there is no reference to the handle at all
(in other words, all handles are dropped), the task would be aborted.Source§fn spawn_unbounded_coroutine_with_receiver_and_context<T, F, C, Fut>(
&self,
context: C,
f: F,
) -> UnboundedCommunicationTask<T>
fn spawn_unbounded_coroutine_with_receiver_and_context<T, F, C, Fut>( &self, context: C, f: F, ) -> UnboundedCommunicationTask<T>
Spawns a new asynchronous task with provided context that accepts messages to the task using
channels.
This function returns a handle that allows sending a message, or if there is no reference to the handle at all
(in other words, all handles are dropped), the task would be aborted.Source§fn scope<'env, F, T>(&self, f: F) -> impl Future<Output = T>where
F: for<'scope> AsyncFnOnce(&'scope Scope<'scope, 'env>) -> T,
fn scope<'env, F, T>(&self, f: F) -> impl Future<Output = T>where
F: for<'scope> AsyncFnOnce(&'scope Scope<'scope, 'env>) -> T,
Create a structured-concurrency scope in which tasks may be spawned
that borrow from the enclosing stack frame. Read more
Source§fn executor_scope<'scope, F, T>(&'scope self, f: F) -> impl Future<Output = T>
fn executor_scope<'scope, F, T>(&'scope self, f: F) -> impl Future<Output = T>
Source§impl<E> ExecutorBlocking for ScopeExecutor<'_, E>where
E: ExecutorBlocking,
impl<E> ExecutorBlocking for ScopeExecutor<'_, E>where
E: ExecutorBlocking,
Source§fn spawn_blocking<F, R>(&self, f: F) -> JoinHandle<R> ⓘ
fn spawn_blocking<F, R>(&self, f: F) -> JoinHandle<R> ⓘ
Spawn a thread in the background with the ability to concurrently await on the results without
blocking the executor. Read more
Source§fn spawn_blocking_abortable<F, R>(&self, f: F) -> AbortableJoinHandle<R> ⓘ
fn spawn_blocking_abortable<F, R>(&self, f: F) -> AbortableJoinHandle<R> ⓘ
Spawns a thread in the background, returning an abortable handle that will cancel it
once the handle is dropped. Read more
Source§impl<E> ExecutorTimeout for ScopeExecutor<'_, E>where
E: Executor,
impl<E> ExecutorTimeout for ScopeExecutor<'_, E>where
E: Executor,
Source§fn spawn_timeout<F>(
&self,
duration: Duration,
f: F,
) -> JoinHandle<Result<F::Output, TimeoutError>> ⓘ
fn spawn_timeout<F>( &self, duration: Duration, f: F, ) -> JoinHandle<Result<F::Output, TimeoutError>> ⓘ
Spawns a new asynchronous task in the background that must complete within
duration,
returning a JoinHandle. Read moreSource§fn spawn_delay<F>(&self, duration: Duration, f: F) -> JoinHandle<F::Output> ⓘ
fn spawn_delay<F>(&self, duration: Duration, f: F) -> JoinHandle<F::Output> ⓘ
Spawns a task after waiting for a duration before the task is polled.
Source§fn spawn_abortable_timeout<F>(
&self,
duration: Duration,
f: F,
) -> AbortableJoinHandle<Result<F::Output, TimeoutError>> ⓘ
fn spawn_abortable_timeout<F>( &self, duration: Duration, f: F, ) -> AbortableJoinHandle<Result<F::Output, TimeoutError>> ⓘ
Spawns a new asynchronous task in the background that must complete within
duration,
returning an abortable handle that will cancel the task once the handle is dropped. Read moreAuto Trait Implementations§
impl<'scope, E> !Freeze for ScopeExecutor<'scope, E>
impl<'scope, E> !RefUnwindSafe for ScopeExecutor<'scope, E>
impl<'scope, E> !UnwindSafe for ScopeExecutor<'scope, E>
impl<'scope, E> Send for ScopeExecutor<'scope, E>
impl<'scope, E> Sync for ScopeExecutor<'scope, E>
impl<'scope, E> Unpin for ScopeExecutor<'scope, E>
impl<'scope, E> UnsafeUnpin for ScopeExecutor<'scope, E>where
&'scope E: UnsafeUnpin,
Blanket Implementations§
Source§impl<T> BorrowMut<T> for Twhere
T: ?Sized,
impl<T> BorrowMut<T> for Twhere
T: ?Sized,
Source§fn borrow_mut(&mut self) -> &mut T
fn borrow_mut(&mut self) -> &mut T
Mutably borrows from an owned value. Read more