pub struct LocalWaker { /* private fields */ }Expand description
A synchronization primitive for task wakeup.
Sometimes the task interested in a given event will change over time.
An LocalWaker can coordinate concurrent notifications with the consumer
potentially “updating” the underlying task to wake up. This is useful in
scenarios where a computation completes in another task and wants to
notify the consumer, but the consumer is in the process of being migrated to
a new logical task.
Consumers should call register before checking the result of a computation
and producers should call wake after producing the computation (this
differs from the usual thread::park pattern). It is also permitted for
wake to be called before register. This results in a no-op.
A single AtomicWaker may be reused for any number of calls to register or
wake.
Implementations§
Source§impl LocalWaker
impl LocalWaker
Sourcepub fn is_registed(&self) -> bool
pub fn is_registed(&self) -> bool
Check if waker has been registered.
Sourcepub fn register(&self, waker: &Waker) -> bool
pub fn register(&self, waker: &Waker) -> bool
Registers the waker to be notified on calls to wake.
Returns true if waker was registered before.
Trait Implementations§
Source§impl Debug for LocalWaker
impl Debug for LocalWaker
Source§impl Default for LocalWaker
impl Default for LocalWaker
Source§fn default() -> LocalWaker
fn default() -> LocalWaker
Auto Trait Implementations§
impl !Freeze for LocalWaker
impl !RefUnwindSafe for LocalWaker
impl !Send for LocalWaker
impl !Sync for LocalWaker
impl Unpin for LocalWaker
impl UnwindSafe for LocalWaker
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> 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