1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32
use std::future::Future; use crate::task::{Builder, JoinHandle}; /// Spawns a task. /// /// This function is similar to [`std::thread::spawn`], except it spawns an asynchronous task. /// /// [`std::thread`]: https://doc.rust-lang.org/std/thread/fn.spawn.html /// /// # Examples /// /// ``` /// # async_std::task::block_on(async { /// # /// use async_std::task; /// /// let handle = task::spawn(async { /// 1 + 2 /// }); /// /// assert_eq!(handle.await, 3); /// # /// # }) /// ``` pub fn spawn<F, T>(future: F) -> JoinHandle<T> where F: Future<Output = T> + Send + 'static, T: Send + 'static, { Builder::new().spawn(future).expect("cannot spawn task") }