Introduction
1.
Navigation
1.1.
By topic
1.2.
FAQs
1.3.
Index
Part 1: guide
2.
Introduction
3.
Concurrent programming
4.
Async and await
5.
More async/await topics
6.
IO and issues with blocking
7.
Concurrency primitives
8.
Channels, locking, and synchronization
9.
Tools for async programming
10.
Destruction and clean-up
11.
Futures
12.
Runtimes
13.
Timers and signal handling
14.
Async iterators (streams)
Part 2: reference
15.
Implementing futures and streams
16.
Alternate runtimes
17.
Implementing your own runtime
18.
async in sync, sync in async
19.
Async IO: readiness vs completion, and io_uring
20.
Design patterns
21.
Cancellation
22.
Starvation
23.
Pinning
24.
Async and FFI
25.
Comparing async programming in Rust to other languages
26.
The implementation of async/await in rustc
27.
Structured concurrency?
Old chapters
28.
Getting Started
28.1.
Why Async?
28.2.
The State of Asynchronous Rust
28.3.
async/.await Primer
29.
Under the Hood: Executing Futures and Tasks
29.1.
The Future Trait
29.2.
Task Wakeups with Waker
29.3.
Applied: Build an Executor
29.4.
Executors and System IO
30.
async/await
31.
Pinning
32.
Streams
32.1.
Iteration and Concurrency
33.
Executing Multiple Futures at a Time
33.1.
join!
33.2.
select!
33.3.
Spawning
33.4.
TODO: Cancellation and Timeouts
33.5.
TODO: FuturesUnordered
34.
Workarounds to Know and Love
34.1.
Send Approximation
34.2.
Recursion
34.3.
async in Traits
35.
The Async Ecosystem
36.
Final Project: HTTP Server
36.1.
Running Asynchronous Code
36.2.
Handling Connections Concurrently
36.3.
Testing the Server
37.
TODO: I/O
37.1.
TODO: AsyncRead and AsyncWrite
38.
TODO: Asynchronous Design Patterns: Solutions and Suggestions
38.1.
TODO: Modeling Servers and the Request/Response Pattern
38.2.
TODO: Managing Shared State
39.
Appendix: Translations of the Book
Light
Rust
Coal
Navy
Ayu
Asynchronous Programming in Rust
Timers and Signal handling
Time and Timers
runtime integration, don't use thread::sleep, etc.
std Instant and Duration
sleep
interval
timeout
Signal handling
what is signal handling and why is it an async issue?
very OS specific
see Tokio docs