Struct async_task::FallibleTask
source · [−]pub struct FallibleTask<T> { /* private fields */ }
Expand description
A spawned task with a fallible response.
This type behaves like Task
, however it produces an Option<T>
when
polled and will return None
if the executor dropped its
Runnable
without being run.
This can be useful to avoid the panic produced when polling the Task
future if the executor dropped its Runnable
.
Implementations
sourceimpl<T> FallibleTask<T>
impl<T> FallibleTask<T>
sourcepub fn detach(self)
pub fn detach(self)
Detaches the task to let it keep running in the background.
Examples
use smol::{Executor, Timer};
use std::time::Duration;
let ex = Executor::new();
// Spawn a deamon future.
ex.spawn(async {
loop {
println!("I'm a daemon task looping forever.");
Timer::after(Duration::from_secs(1)).await;
}
})
.fallible()
.detach();
sourcepub async fn cancel(self) -> Option<T>
pub async fn cancel(self) -> Option<T>
Cancels the task and waits for it to stop running.
Returns the task’s output if it was completed just before it got canceled, or None
if
it didn’t complete.
While it’s possible to simply drop the Task
to cancel it, this is a cleaner way of
canceling because it also waits for the task to stop running.
Examples
use smol::{future, Executor, Timer};
use std::thread;
use std::time::Duration;
let ex = Executor::new();
// Spawn a deamon future.
let task = ex.spawn(async {
loop {
println!("Even though I'm in an infinite loop, you can still cancel me!");
Timer::after(Duration::from_secs(1)).await;
}
})
.fallible();
// Run an executor thread.
thread::spawn(move || future::block_on(ex.run(future::pending::<()>())));
future::block_on(async {
Timer::after(Duration::from_secs(3)).await;
task.cancel().await;
});
Trait Implementations
sourceimpl<T> Debug for FallibleTask<T>
impl<T> Debug for FallibleTask<T>
sourceimpl<T> Future for FallibleTask<T>
impl<T> Future for FallibleTask<T>
Auto Trait Implementations
impl<T> RefUnwindSafe for FallibleTask<T>
impl<T> Send for FallibleTask<T> where
T: Send,
impl<T> Sync for FallibleTask<T>
impl<T> Unpin for FallibleTask<T>
impl<T> UnwindSafe for FallibleTask<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 Output = <F as Future>::Output
type Output = <F as Future>::Output
into_future
)The output that the future will produce on completion.
type IntoFuture = F
type IntoFuture = F
into_future
)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
into_future
)Creates a future from a value.