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
impl Waker
Sourcepub unsafe fn new(inner: *const dyn UnsafeWake) -> Waker
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.
Sourcepub fn will_wake(&self, other: &Waker) -> bool
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 Waker
s would awaken the same task. However, if this function
returns true, it is guaranteed that the Waker
s will awaken the same
task.
This function is primarily used for optimization purposes.
Trait Implementations§
impl Send for Waker
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> 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
Source§impl<T> CloneToUninit for Twhere
T: Clone,
impl<T> CloneToUninit for Twhere
T: Clone,
Source§unsafe fn clone_to_uninit(&self, dst: *mut T)
unsafe fn clone_to_uninit(&self, dst: *mut T)
clone_to_uninit
)Source§impl<T> IntoEither for T
impl<T> IntoEither for T
Source§fn into_either(self, into_left: bool) -> Either<Self, Self> ⓘ
fn into_either(self, into_left: bool) -> Either<Self, Self> ⓘ
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 moreSource§fn into_either_with<F>(self, into_left: F) -> Either<Self, Self> ⓘ
fn into_either_with<F>(self, into_left: F) -> Either<Self, Self> ⓘ
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