1. 1. Getting Started
    1. 1.1. Why Async?
    2. 1.2. The State of Asynchronous Rust
    3. 1.3. async/.await Primer
    4. 1.4. Applied: HTTP Server
  2. 2. Under the Hood: Executing Futures and Tasks
    1. 2.1. The Future Trait
    2. 2.2. Task Wakeups with Waker
    3. 2.3. Applied: Build an Executor
    4. 2.4. Executors and System IO
  3. 3. async/await
  4. 4. Pinning
  5. 5. Streams
    1. 5.1. Iteration and Concurrency
  6. 6. Executing Multiple Futures at a Time
    1. 6.1. join!
    2. 6.2. select!
    3. 6.3. TODO: Spawning
    4. 6.4. TODO: Cancellation and Timeouts
    5. 6.5. TODO: FuturesUnordered
  7. 7. Workarounds to Know and Love
    1. 7.1. Return Type Errors
    2. 7.2. ? in async Blocks
    3. 7.3. Send Approximation
    4. 7.4. Recursion
    5. 7.5. async in Traits
  8. 8. TODO: I/O
    1. 8.1. TODO: AsyncRead and AsyncWrite
  9. 9. TODO: Asynchronous Design Patterns: Solutions and Suggestions
    1. 9.1. TODO: Modeling Servers and the Request/Response Pattern
    2. 9.2. TODO: Managing Shared State
  10. 10. TODO: The Ecosystem: Tokio and More
    1. 10.1. TODO: Lots, lots more?...

Asynchronous Programming in Rust