Skip to content
0:00 / 0:00

#asyncawait#futures#pinning

The Talk You've Been Await-ing for

InfoQ

234K subscribers • 71 videos on Hallway • Conference channel

YouTube
  • Recommended by 5 people: 5 in engineering communities.
  • Presented by Steve Klabnik

Advanced. Deep dive for people who know the field.

64K views6 years ago5 recommendations

Programming languagesSystems programmingRustConcurrency and parallelismLanguage design and type systems

Steve Klabnik explains the deep technical details of how async/await, futures, and pinning work under the hood in Rust.

QCon San Francisco, the international software conference, returns November 17-21, 2025. Join senior software practitioners from early adopter companies as they share real-world insights and actionable advice to help you adopt the right technologies and practices. Gain exposure to innovative approaches and fresh ideas in software development and engineering, designed to inspire and challenge you. Don’t miss this chance to deepen your knowledge, sharpen your skills, and stay ahead in the ever-evolving world of technology. Register now: bit.ly/3BYzfbe ------------------------------------------------------------------------------------------------------------------ Video with transcript included: bit.ly/2SUArna Steve Klabnik goes over the deep details of how async/await works in Rust, covering concepts like coroutines, generators, stack-less vs stack-ful, "pinning", and more. This presentation was recorded at QCon San Francisco 2019: bit.ly/38sivWf #Rust #SystemProgramming #SoftwareArchitecture

Why it's here

5 people recommend this

What people say. Recommended as one of the best explanations of how async/await and futures work in Rust.

Moments people linked to

u/WrongJudgment6in r/rust • Recommends

On “What is your favorite video/talk about Rust?”

In no particular order On testing Building Reliable Infrastructure in Rust by Tyler Neely On API design Type-Driven API Design in Rust by Will Chricton History and design of Async Await over it's inception Rust's Journey to Async/Await by Steve Klabnik Part 2 of sorts The Talk you've Been Await-ing For by Steve Klabnik On data structures from scratch Implementing Rust's Vec from Scratch by Ryan Levick

u/stefan0xCin r/rust • Recommends

On “Rust’s Futures Explained with an example”

The `futures::join!` macro polls both futures concurrently (otherwise the `.await`s would be processed sequentially). /u/steveklabnik1 explains why this is important in 2 minutes here: [video (I would recommend watching the whole talk if you want to deepen your understanding of how async/await works in rust.)
7View on Reddit

u/MacD83in r/rust • Recommends

On “Hubris - OS for embedded computer systems”

Here are the links to the two talks: Rust's Journey to Async/Await and The Talk You've Been Await-ing for.

u/gigapikselin r/rust • Recommends

On “Why does this async code not compile?”

What the compiler does across an await point is gather all of the values that are still active and stores them in a variant of a new (anonymous) enum. Each await makes a new variant of this enum. If any of these values are not send then the whole enum is not send. In the first example the Rc is dropped before any await. I found this video helpful for explaining how futures work in rust link to this video

u/WrongJudgment6in r/rust • Recommends

On “Uncovered Intermediate Topics”

Steve Klabnik's Journey to Async/Await link to this video and The talk you have been await-ing for (great pun) link to this video talk about the design process and the considerations at the language level

u/RunGCCin r/rust • Recommends

On “Trying to understand Async/await vs regular threads”

This is probably the best presentation on how Async / Await works in Rust: link to this video The presenter was a member of the Rust core team and helped write The Rust Programming Language book. The oversimplified explanation is threads are for _doing_ things in parallel, async is for _waiting_ on things in parallel. Threads are used for performing operations in parallel that don’t have operations that you have to wait on (like math). Async is good for dispatching many tasks that will involve a lot of waiting, not computing (like http or db requests). For example, a web server might asynchronously wait for new user connections, and use thread pools to process the data supplied by those connections…