kvarn_async::prelude::compact_str::core::task

Struct Waker

1.36.0 ยท 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 encapsulates a RawWaker instance, which defines the executor-specific wakeup behavior.

The typical life of a Waker is that it is constructed by an executor, wrapped in a Context, then passed to Future::poll(). Then, if the future chooses to return Poll::Pending, it must also store the waker somehow and call Waker::wake() when the future should be polled again.

Implements Clone, Send, and Sync; therefore, a waker may be invoked from any thread, including ones not in any way managed by the executor. For example, this might be done to wake a future when a blocking function call completes on another thread.

Note that it is preferable to use waker.clone_from(&new_waker) instead of *waker = new_waker.clone(), as the former will avoid cloning the waker unnecessarily if the two wakers wake the same