1. Introduction
  2. Navigation
    1. By topic
    2. FAQs
    3. Index
  3. Part 1: guide
  4. Introduction
  5. Concurrent programming
  6. Async and await
  7. Advanced async/await topics
  8. IO and issues with blocking
  9. Concurrency primitives
  10. Channels, locking, and synchronization
  11. Tools for async programming
  12. Destruction and clean-up
  13. Futures
  14. Runtimes
  15. Timers and signal handling
  16. Async iterators (streams)
  17. Part 2: reference
  18. Implementing futures and streams
  19. Alternate runtimes
  20. Implementing your own runtime
  21. async in sync, sync in async
  22. Async IO: readiness vs completion, and io_uring
  23. Design patterns
  24. Cancellation
  25. Starvation
  26. Pinning
  27. Async and FFI
  28. Comparing async programming in Rust to other languages
  29. The implementation of async/await in rustc
  30. Structured concurrency?
  31. Old chapters
  32. Getting Started
    1. Why Async?
    2. The State of Asynchronous Rust
    3. async/.await Primer
  33. Under the Hood: Executing Futures and Tasks
    1. The Future Trait
    2. Task Wakeups with Waker
    3. Applied: Build an Executor
    4. Executors and System IO
  34. async/await
  35. Pinning
  36. Streams
    1. Iteration and Concurrency
  37. Executing Multiple Futures at a Time
    1. join!
    2. select!
    3. Spawning
    4. TODO: Cancellation and Timeouts
    5. TODO: FuturesUnordered
  38. Workarounds to Know and Love
    1. ? in async Blocks
    2. Send Approximation
    3. Recursion
    4. async in Traits
  39. The Async Ecosystem
  40. Final Project: HTTP Server
    1. Running Asynchronous Code
    2. Handling Connections Concurrently
    3. Testing the Server
  41. TODO: I/O
    1. TODO: AsyncRead and AsyncWrite
  42. TODO: Asynchronous Design Patterns: Solutions and Suggestions
    1. TODO: Modeling Servers and the Request/Response Pattern
    2. TODO: Managing Shared State
  43. Appendix: Translations of the Book