Tokio
Tokio ofrece lo siguiente:
- Un tiempo de ejecución multihilo para ejecutar código asíncrono.
 - Una versión asíncrona de la biblioteca estándar.
 - Un amplio ecosistema de bibliotecas.
 
use tokio::time; async fn count_to(count: i32) { for i in 1..=count { println!("Count in task: {i}!"); time::sleep(time::Duration::from_millis(5)).await; } } #[tokio::main] async fn main() { tokio::spawn(count_to(10)); for i in 1..5 { println!("Main task: {i}"); time::sleep(time::Duration::from_millis(5)).await; } }
- 
Con la macro
tokio::main, podemos hacer quemainsea asíncrono. - 
La función
spawncrea una “tarea” simultánea. - 
Nota:
spawnutiliza unFuture, no se llama a.awaitencount_to. 
Más información:
- 
¿Por qué
count_tono suele llegar a 10? Se trata de un ejemplo de cancelación asíncrona.tokio::spawndevuelve un controlador que puede esperarse hasta que termine. - 
Prueba
count_to(10).awaiten lugar de usar spawn. - 
Intenta esperar a la correción de la tarea de
tokio::spawn.