pub struct Executor<T, const N: usize> { /* private fields */ }
Expand description

Task executor singleton

Implementations§

source§

impl<T, const N: usize> Executor<T, N>

source

pub fn take() -> Option<Self>

use async_hal::Executor;

let executor = Executor::<(), 1>::take().unwrap();

// Only one executor can exist at a time
assert!(Executor::<(), 2>::take().is_none());

// After dropping the executor, we can create a new one
drop(executor);
assert!(Executor::<(), 2>::take().is_some());
source

pub fn spawn(&self, task: T) -> Option<T>

Spawn a task on the executor.

source

pub fn run(&mut self) -> Option<T::Output>where T: Future + Unpin,

Poll each pending task, returning the output of the first that’s ready. If none are ready, this function returns None. Otherwise this method should be called until no tasks are left pending.

source

pub fn split(&mut self) -> (Spawner<'_, T, N>, Runner<'_, T, N>)

Trait Implementations§

source§

impl<T, const N: usize> Drop for Executor<T, N>

source§

fn drop(&mut self)

Executes the destructor for this type. Read more

Auto Trait Implementations§

§

impl<T, const N: usize> !RefUnwindSafe for Executor<T, N>

§

impl<T, const N: usize> Send for Executor<T, N>where T: Send,

§

impl<T, const N: usize> !Sync for Executor<T, N>

§

impl<T, const N: usize> Unpin for Executor<T, N>where T: Unpin,

§

impl<T, const N: usize> UnwindSafe for Executor<T, N>where T: UnwindSafe,

Blanket Implementations§

source§

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

source§

fn type_id(&self) -> TypeId

Gets the TypeId of self. Read more
source§

impl<T> Borrow<T> for Twhere T: ?Sized,

source§

fn borrow(&self) -> &T

Immutably borrows from an owned value. Read more
source§

impl<T> BorrowMut<T> for Twhere 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 Twhere 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 Twhere U: Into<T>,

§

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 Twhere U: TryFrom<T>,

§

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.