The state of async Rust in 2026
30-second read
A reflective post on what async Rust got right, what it got wrong, and what's still unresolved. The HN response is almost entirely from people who ship async Rust in production — refreshingly substantive and largely free of language-war noise.
▲ For
- Tokio + async/await is now mature enough for real production workloads; the original 'function coloring' complaint is more theoretical than operational.
- Performance is genuinely best-in-class for I/O-bound services — multiple commenters report 5–10× throughput vs equivalent Go services on the same hardware.
- The ecosystem (axum, tonic, sqlx) has converged enough that picking a stack is no longer a multi-week research project.
▼ Against
- Lifetimes in async code are still a learning cliff; junior engineers routinely spend their first month fighting `'static` bounds and `Send` errors.
- Trait objects (`dyn Future`) and async-in-traits remain awkward despite recent improvements; library authors have to make architectural choices that leak into their public API.
- Cancellation is structurally underspecified — most production bugs in async Rust services trace back to cancellation safety, and the language gives you no help.
? Still unknown
- Whether the language team will land a proper structured-concurrency proposal (similar to Trio in Python) and whether the ecosystem would adopt it.
- How much async Rust's lessons transfer to Zig, Swift 6, and other languages now adding structured concurrency.
- The long-term winner between Tokio and the smol/async-std camp — most new code uses Tokio but the alternatives aren't dead.
→ What it means
- If you're starting a new I/O-heavy service in 2026, async Rust is a defensible choice for the first time without major caveats.
- Hire for async Rust experience explicitly — the learning curve is real and 'good Rust developer' doesn't necessarily mean 'good async Rust developer'.
- Expect a structured-concurrency RFC in the next 12 months; the pain is now well-articulated enough that the language team can act on it.
“ Notable quotes
I think we made the right call to ship async/await when we did. I also think we left structured concurrency on the table and we're paying for that now.— withoutboats
Async Rust is no longer the hardest part of writing a Rust service. The hardest part is now the same as every other language: making cancellation correct.— fasterthanlime
This is a hand-curated demonstration of grephn's AI compression format. Argument structure, quotes, and figures are representative of the linked HN discussion but are not verbatim transcriptions. Open the app to run live compression on any current thread.