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§
source§impl<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§
source§impl<T> Debug for FallibleTask<T>
impl<T> Debug for FallibleTask<T>
source§impl<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§
source§impl<T> BorrowMut<T> for Twhere
T: ?Sized,
impl<T> BorrowMut<T> for Twhere
T: ?Sized,
source§fn borrow_mut(&mut self) -> &mut T
fn borrow_mut(&mut self) -> &mut T
Mutably borrows from an owned value. Read more
source§impl<F> IntoFuture for Fwhere
F: Future,
impl<F> IntoFuture for Fwhere
F: Future,
§type IntoFuture = F
type IntoFuture = F
Which kind of future are we turning this into?
source§fn into_future(self) -> <F as IntoFuture>::IntoFuture
fn into_future(self) -> <F as IntoFuture>::IntoFuture
Creates a future from a value. Read more