async/await
En general, el código asíncrono de Rust se parece mucho al código secuencial “normal”:
use futures::executor::block_on; async fn count_to(count: i32) { for i in 1..=count { println!("Count is: {i}!"); } } async fn async_main(count: i32) { count_to(count).await; } fn main() { block_on(async_main(10)); }
Puntos clave:
- 
Ten en cuenta que este es un ejemplo simplificado para mostrar la sintaxis. No hay ninguna operación de larga duración ni concurrencia real.
 - 
¿Cuál es el tipo de resultado devuelto de una llamada asíncrona?
- Consulta el tipo con 
let future: () = async_main(10);enmain. 
 - Consulta el tipo con 
 - 
La palabra clave “async” es azúcar sintáctico. El compilador sustituye el tipo de resultado devuelto por un futuro.
 - 
No se puede hacer que
mainsea asíncrono sin dar instrucciones adicionales al compilador sobre cómo usar el futuro devuelto. - 
Se necesita un ejecutor para ejecutar el código asíncrono.
block_onbloquea el hilo hasta que se complete el futuro proporcionado. - 
.awaitespera de forma asíncrona la finalización de otra operación. A diferencia deblock_on,.awaitno bloquea el hilo. - 
.awaitsolo se puede usar dentro de una funciónasync(o bloqueo; estos se verán más tarde).