Skip to main content

BackgroundExecutor

Struct BackgroundExecutor 

Source
pub struct BackgroundExecutor { /* private fields */ }
Expand description

An executor that runs Send futures on the background thread pool.

Applications get one from background_executor on their context. Cloning is cheap, and every clone shares the same scheduler.

Implementations§

Source§

impl BackgroundExecutor

Source

pub fn new(scheduler: Arc<dyn Scheduler>) -> Self

Creates a background executor that spawns onto scheduler.

Source

pub fn spawn<F>(&self, future: F) -> Task<F::Output> ⓘ
where F: Future + Send + 'static, F::Output: Send + 'static,

Spawns a future on the background thread pool with the default priority.

The future may run on any background thread, so it must be Send. Dropping the returned Task cancels the future. Call Task::detach to let it finish on its own. Use LocalExecutor::spawn for futures that aren’t Send or that need to stay on the main thread.

Source

pub fn spawn_with_priority<F>( &self, priority: Priority, future: F, ) -> Task<F::Output> ⓘ
where F: Future + Send + 'static, F::Output: Send + 'static,

Spawns a future on the background thread pool at priority.

Like Self::spawn, but the scheduler uses priority to order this future against other background work waiting to run.

Source

pub fn spawn_realtime<F>(&self, future: F) -> Task<F::Output> ⓘ
where F: Future + Send + 'static, F::Output: Send + 'static,

Spawns a future on the platform’s realtime thread, for latency-sensitive work such as audio processing.

The future must be Send. Use Self::spawn for everything else.

Source

pub fn timer(&self, duration: Duration) -> Timer ⓘ

Returns a Timer that completes after duration.

Source

pub fn now(&self) -> Instant

Returns the current time from this scheduler’s clock.

Under the test scheduler this is the simulated clock, which moves only when the test advances it.

Source

pub fn scheduler(&self) -> &Arc<dyn Scheduler> ⓘ

Returns the scheduler that this executor spawns onto.

Source

pub fn is_test(&self) -> bool

Whether this executor runs on a TestScheduler.

Source

pub fn spawn_dedicated<F, Fut>(&self, f: F) -> Task<Fut::Output> ⓘ
where F: FnOnce(LocalExecutor) -> Fut + Send + 'static, Fut: Future + 'static, Fut::Output: Send + Sync + 'static,

Spawns a closure on a new session that has its own LocalExecutor.

The closure runs on a new OS thread under the platform scheduler, or on the test scheduler’s loop under TestScheduler. Its future can use the executor it receives to spawn more work on that thread.

The returned task is the closure’s work. Dropping it cancels the work, awaiting it yields the closure’s return value, and Task::detach lets the work run on after the caller is done with it.

Trait Implementations§

Source§

impl Clone for BackgroundExecutor

Source§

fn clone(&self) -> Self

Returns a duplicate of the value. Read more
1.0.0 (const: unstable) · Source§

fn clone_from(&mut self, source: &Self)

Performs copy-assignment from source. Read more

Auto Trait Implementations§

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<ST, DT> CastableFrom<ST, Initialized, Initialized> for DT
where ST: ?Sized, DT: ?Sized,

Source§

impl<ST, DT> CastableFrom<ST, Uninit, Uninit> for DT
where ST: ?Sized, DT: ?Sized,

Source§

impl<T> CloneToUninit for T
where T: Clone,

Source§

unsafe fn clone_to_uninit(&self, dest: *mut u8)

🔬This is a nightly-only experimental API. (clone_to_uninit)
Performs copy-assignment from self to dest. 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> Read<Exclusive, BecauseExclusive> for T
where T: ?Sized,

Source§

impl<T> ToOwned for T
where T: Clone,

Source§

type Owned = T

The resulting type after obtaining ownership.
Source§

fn to_owned(&self) -> T

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

fn clone_into(&self, target: &mut T)

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

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

Source§

type Error = !

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

fn try_from(value: U) -> Result<T, !>

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.
Source§

impl<V, T> VZip<V> for T
where V: MultiLane<T>,

Source§

fn vzip(self) -> V