🦀 Nested `async/await` in Rust — What Happens Under the Hood

⚓ Rust    📅 2025-11-02    👤 surdeus    👁️ 4      

surdeus

When one async fn calls another, Rust builds nested state machines to manage suspension and resumption. The outer future holds the inner one in its environment, and each .await becomes a state transition in a generated jump table.

The article below provides a detailed walkthrough of this transformation, illustrating how high-level async code compiles into low-level control flow and data structures. It covers:

  • How each async fn becomes a Future with explicit states and a poll loop
  • How nested awaits create layered state machines with captured environments
  • How loops translate into back-edges in the generated jump table
  • What the resulting assembly looks like, with comments on how the executor interacts with it

1 post - 1 participant

Read full topic

🏷️ Rust_feed