futures_core::task

Struct Waker

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

A Waker is a handle for waking up a task by notifying its executor that it is ready to be run.

This handle contains a trait object pointing to an instance of the Wake trait, allowing notifications to get routed through it. Usually Waker instances are provided by an executor.

If you’re implementing an executor, the recommended way to create a Waker is via Waker::from applied to an Arc<T> value where T: Wake. The unsafe new constructor should be used only in niche, no_std settings.

Implementations§

Source§

impl Waker

Source

pub unsafe fn new(inner: *const dyn UnsafeWake) -> Waker

Constructs a new Waker directly.

Note that most code will not need to call this. Implementers of the UnsafeWake trait will typically provide a wrapper that calls this but you otherwise shouldn’t call it directly.

If you’re working with the standard library then it’s recommended to use the Waker::from function instead which works with the safe Arc type and the safe Wake trait.

Source

pub fn wake(&self)

Wake up the task associated with this Waker.

Source

pub fn will_wake(&self, other: &Waker) -> bool

Returns whether or not this Waker and other awaken the same task.

This function works on a best-effort basis, and may return false even when the Wakers would awaken the same task. However, if this function returns true, it is guaranteed that the Wakers will awaken the same task.

This function is primarily used for optimization purposes.

Trait Implementations§

Source§

impl Clone for Waker

Source§

fn clone(&self) -> Self

Returns a copy of the value. Read more
1.0.0 · Source§

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

Performs copy-assignment from source. Read more
Source§

impl Debug for Waker

Source§

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

Formats the value using the given formatter. Read more
Source§

impl Drop for Waker

Source§

fn drop(&mut self)

Executes the destructor for this type. Read more
Source§

impl<T> From<Arc<T>> for Waker
where T: Wake + 'static,

Source§

fn from(rc: Arc<T>) -> Waker

Converts to this type from the input type.
Source§

impl Send for Waker

Source§

impl Sync for Waker

Auto Trait Implementations§

§

impl Freeze for Waker

§

impl !RefUnwindSafe for Waker

§

impl Unpin for Waker

§

impl !UnwindSafe for Waker

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> CloneToUninit for T
where T: Clone,

Source§

unsafe fn clone_to_uninit(&self, dst: *mut T)

🔬This is a nightly-only experimental API. (clone_to_uninit)
Performs copy-assignment from self to dst. 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> IntoEither for T

Source§

fn into_either(self, into_left: bool) -> Either<Self, Self>

Converts self into a Left variant of Either<Self, Self> if into_left is true. Converts self into a Right variant of Either<Self, Self> otherwise. Read more
Source§

fn into_either_with<F>(self, into_left: F) -> Either<Self, Self>
where F: FnOnce(&Self) -> bool,

Converts self into a Left variant of Either<Self, Self> if into_left(&self) returns true. Converts self into a Right variant of Either<Self, Self> otherwise. Read more
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 = 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.