pub fn spawn<Fut>(f: Fut) -> JoinHandle<<Fut as Future>::Output> ⓘwhere
Fut: Future + 'static,
<Fut as Future>::Output: 'static,
Expand description
Spawns a future on the current thread as a new task.
If not immediately awaited, the task can be cancelled using JoinHandle::abort
.
The provided future is spawned as a new task; therefore, panics are caught.
Panics
Panics if Actix system is not running.
Examples
// task resolves successfully
assert_eq!(actix_rt::spawn(async { 1 }).await.unwrap(), 1);
// task panics
assert!(actix_rt::spawn(async {
panic!("panic is caught at task boundary");
})
.await
.unwrap_err()
.is_panic());
// task is cancelled before completion
let handle = actix_rt::spawn(actix_rt::time::sleep(Duration::from_secs(100)));
handle.abort();
assert!(handle.await.unwrap_err().is_cancelled());