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