async y await en Rust
Una async fn devuelve un futuro: nada corre hasta que un runtime lo sondea.
use tokio::time::{sleep, Duration};
async fn fetch(name: &str) -> String {
sleep(Duration::from_millis(50)).await;
format!("{name} loaded")
}
#[tokio::main]
async fn main() {
let first = fetch("basics").await;
println!("{first}");
let second = fetch("traits");
println!("not started yet");
println!("{}", second.await);
}
Cómo funciona
- Los cuerpos
async fnson perezosos — llamar a uno no hace trabajo. .awaitcede el control hasta que ese futuro esté listo.#[tokio::main]envuelve main en el runtime que los impulsa.
Palabras clave y builtins usados aquí
Stringasyncawaitfnletstruse
El intento, en números
- Líneas
- 16
- Caracteres a escribir
- 324
- Tokens
- 100
- Ritmo de tres estrellas
- 110 tpm
Al ritmo de tres estrellas de 110 tokens por minuto, este intento toma unos 55 segundos.
Paso 1 de 6 en Async con tokio; paso 9 de 15 en Concurrencia y async.