pub struct TaskRef(/* private fields */);
Expand description
A type-erased, reference-counted pointer to a spawned Task
.
Once a task has been spawned, it is generally referenced by a TaskRef
.
When a spawned task is placed in a scheduler’s run queue, dequeuing the next
task will yield a TaskRef
, and a TaskRef
may be converted into a
Waker
or used to await a spawned task’s completion.
TaskRef
s are reference-counted, and the task will be deallocated when the
last TaskRef
pointing to it is dropped.
Implementations§
Source§impl TaskRef
impl TaskRef
Sourcepub fn id(&self) -> TaskId
pub fn id(&self) -> TaskId
Returns a TaskId
that uniquely identifies this task.
The returned ID does not increment the task’s reference count, and may persist even after the task it identifies has completed and been deallocated.
Sourcepub fn cancel(&self) -> bool
pub fn cancel(&self) -> bool
Forcibly cancel the task.
Canceling a task sets a flag indicating that it has been canceled and
should terminate. The next time a canceled task is polled by the
scheduler, it will terminate instead of polling the inner Future
. If
the task has a JoinHandle
, that JoinHandle
will complete with a
JoinError
. The task then will be deallocated once all
JoinHandle
s and TaskRef
s referencing it have been dropped.
This method returns true
if the task was canceled successfully, and
false
if the task could not be canceled (i.e., it has already completed,
has already been canceled, cancel culture has gone TOO FAR, et cetera).
Sourcepub fn is_complete(&self) -> bool
pub fn is_complete(&self) -> bool
Returns true
if this task has completed.
Tasks are considered completed when the spawned Future
has returned
Poll::Ready
, or if the task has been canceled by the cancel()
method.
Note: This method can return false
after cancel()
has
been called. This is because calling cancel
begins the process of
cancelling a task. The task is not considered canceled until it has been
polled by the scheduler after calling cancel()
.