</>
Plan du cours — 49/66

Le modèle async de Rust

Avancé

Une async fn renvoie un Future : une valeur inerte qui ne fait rien tant qu'elle n'est pas awaitée ou pollée par un runtime. Rust n'embarque pas de runtime : on utilise Tokio (le standard de fait).

cargo add tokio -F full
use std::time::Duration;

#[tokio::main]
async fn main() {
    let resultat = calculer().await;    // .await suspend sans bloquer le thread
    println!("{resultat}");
}

async fn calculer() -> u32 {
    tokio::time::sleep(Duration::from_millis(100)).await;
    42
}

Piège : ne jamais utiliser std::thread::sleep ni des I/O bloquantes dans du code async — cela bloque le thread du runtime et gèle les autres tâches. Utilisez tokio::time::sleep / tokio::fs, ou spawn_blocking.