Struct abort_on_drop::ChildTask
source · [−]pub struct ChildTask<T> { /* private fields */ }
Methods from Deref<Target = JoinHandle<T>>
sourcepub fn abort(&self)
pub fn abort(&self)
Abort the task associated with the handle.
Awaiting a cancelled task might complete as usual if the task was
already completed at the time it was cancelled, but most likely it
will fail with a cancelled JoinError
.
use tokio::time;
#[tokio::main]
async fn main() {
let mut handles = Vec::new();
handles.push(tokio::spawn(async {
time::sleep(time::Duration::from_secs(10)).await;
true
}));
handles.push(tokio::spawn(async {
time::sleep(time::Duration::from_secs(10)).await;
false
}));
for handle in &handles {
handle.abort();
}
for handle in handles {
assert!(handle.await.unwrap_err().is_cancelled());
}
}
sourcepub fn is_finished(&self) -> bool
pub fn is_finished(&self) -> bool
Checks if the task associated with this JoinHandle
has finished.
Please note that this method can return false
even if abort
has been
called on the task. This is because the cancellation process may take
some time, and this method does not return true
until it has
completed.
use tokio::time;
let handle1 = tokio::spawn(async {
// do some stuff here
});
let handle2 = tokio::spawn(async {
// do some other stuff here
time::sleep(time::Duration::from_secs(10)).await;
});
// Wait for the task to finish
handle2.abort();
time::sleep(time::Duration::from_secs(1)).await;
assert!(handle1.is_finished());
assert!(handle2.is_finished());
Trait Implementations
sourceimpl<T> Deref for ChildTask<T>
impl<T> Deref for ChildTask<T>
type Target = JoinHandle<T>
type Target = JoinHandle<T>
The resulting type after dereferencing.
sourceimpl<T> From<JoinHandle<T>> for ChildTask<T>
impl<T> From<JoinHandle<T>> for ChildTask<T>
sourcefn from(inner: JoinHandle<T>) -> Self
fn from(inner: JoinHandle<T>) -> Self
Converts to this type from the input type.
Auto Trait Implementations
impl<T> RefUnwindSafe for ChildTask<T>
impl<T> Send for ChildTask<T> where
T: Send,
impl<T> Sync for ChildTask<T> where
T: Send,
impl<T> Unpin for ChildTask<T>
impl<T> UnwindSafe for ChildTask<T>
Blanket Implementations
sourceimpl<T> BorrowMut<T> for T where
T: ?Sized,
impl<T> BorrowMut<T> for T where
T: ?Sized,
const: unstable · sourcefn borrow_mut(&mut self) -> &mut T
fn borrow_mut(&mut self) -> &mut T
Mutably borrows from an owned value. Read more
sourceimpl<F> IntoFuture for F where
F: Future,
impl<F> IntoFuture for F where
F: Future,
type IntoFuture = F
type IntoFuture = F
Which kind of future are we turning this into?
sourcefn into_future(self) -> <F as IntoFuture>::IntoFuture
fn into_future(self) -> <F as IntoFuture>::IntoFuture
Creates a future from a value. Read more