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. More async/await topics
  8. IO and issues with blocking
  9. Composing futures concurrently
  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 and cancellation safety
  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. Send Approximation
    2. Recursion
    3. 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