Struct cancellation::CancellationToken
[−]
[src]
pub struct CancellationToken { // some fields omitted }
A CancellationToken is used to query whether an operation should be canceled.
To cancel a token, use CancellationTokenSource
.
Use CancellationTokenSource
to obtain instances of CancellationToken
.
Methods
impl CancellationToken
fn none() -> &'static CancellationToken
Returns a reference to a cancellation token that is never canceled.
fn is_canceled(&self) -> bool
Gets whether this token has been canceled.
This function is inherently racy: it may start returning true
at any moment as the token is canceled by another thread.
However, once the function returns true
, it will always keep returning true
(cancellation tokens cannot be reset).
fn result(&self) -> Result<(), OperationCanceled>
Returns Ok(())
if this token has not been canceled.
Returns Err(OperationCanceled)
if this token has been canceled.
This is an alternative to is_canceled()
that can be
used with the try!()
macro.
fn run<C, F, R>(&self, on_cancel: C, f: F) -> R where C: FnOnce() + Send, F: FnOnce() -> R
Runs function f
on the current thread.
If the token is canceled while f
is running,
the on_cancel
function will be executed by the
thread calling cancel()
.
If the f
callback returns before the on_cancel
callback does,
run()
waits for the on_cancel
callback to finish before returning.
Any memory writes performed by the on_cancel
callback will be visible
after run()
returns.
If the token is already canceled when this function
is called, on_cancel
will be executed on the
current thread before f
is called.
If the token is not canceled during the execution of f
, the
on_cancel
callback will not be called at all.
Panics in the f
callback are supported: unwinding will wait for
on_cancel
to finish (if it is running concurrently) and unregister
the on_cancel
callback from the token.
Panics in the on_cancel
callback may abort the process.