A comprehensive learning path through Rust's async ecosystem, organized as a cargo workspace with each crate focusing on a specific async topic.
This workspace is organized into logical learning layers:
future-basics
- Future trait, Poll, Waker, manual implementationspin-unpin-safety
- Memory safety with Pin and self-referential structs
executor-internals
- Building a minimal executorruntime-comparison
- Comparing tokio, async-std, and smol
async-concurrency
- join!, select!, concurrent executionasync-channels
- Channel types and actor patternsasync-sync-primitives
- Async Mutex, RwLock, Semaphore
async-io-patterns
- AsyncRead/Write, file and network I/Oasync-streams
- Stream trait and async iteration
async-error-handling
- Error propagation and recoveryasync-testing
- Testing strategies for async codeasync-performance
- Profiling and optimization
async-web-patterns
- Web services and middlewareasync-state-machines
- Complex async flowsasync-distributed
- Microservices and distributed systems
async-embedded
- no_std async programmingasync-wasm
- Browser and WASI asyncasync-patterns-cookbook
- Common recipes and patterns
- Start with the Foundation Layer crates in order
- Move to Runtime & Execution to understand how async works
- Learn Concurrency Patterns for practical async programming
- Explore remaining topics based on your needs
Each crate contains:
- Detailed README with learning objectives
- Progressive examples
- Exercises with solutions
- Links to further reading
This is a learning project. Contributions that improve explanations, add examples, or fix issues are welcome!