It wasn’t always so clear, but the Rust programming language is fundamentally about empowerment: no matter what kind of code you are writing now, Rust empowers you to reach farther, to program with confidence in a wider variety of domains than you did before.
Rust Book's Foreword
This project represents a hard-way step-by-step Rust learning course from language basics to a capability of web backend development.
- Create a new GitHub repository for yourself using this one as template.
- Invite as a collaborator of your repository the person you want to review your lessons (lead).
Rust books, articles, libraries and other additinal information repository learn_rust_together.
Each step must be performed as a separate PR (pull request) with an appropriate name and checked here in README's schedule after completion. Each step is a Cargo workspace member, so you can run/test it from a project root (i.e. cargo run -p step_1_8
). Consider to use rustfmt and Clippy when you're writing Rust code.
Each step has estimated time for being completed. If any deeper investigation on step's theme is required for you, then it's on your own.
Do not hesitate to ask your lead with questions, however you won't receive a concrete answer, but rather a direction for investigation. Lead is the one who asks questions about everything here and demands a concrete answers.
- 0. Become familiar with Rust basics (3 days)
- 1. Concepts (2 days)
- 1.1. Default values, cloning and copying (1 day)
- 1.2. Boxing and pinning (1 day)
- 1.3. Shared ownership and interior mutability (1 day)
- 1.4. Clone-on-write (1 day)
- 1.5. Conversions, casting and dereferencing (1 day)
- 1.6. Static and dynamic dispatch (1 day)
- 1.7.
Sized
and?Sized
types (1 day) - 1.8. Thread safety (1 day)
- 1.9. Phantom types (1 day)
- 2. Idioms (2 days)
- 3. Ecosystem (5 days)
- 3.1. Testing and mocking (1 day)
- 3.2. Declarative and procedural macros (1 day)
- 3.3. Date and time (1 day)
- 3.4. Regular expressions and custom parsers (1 day)
- 3.5. Collections and iterators (1 day)
- 3.6. Serialization and deserialization (1 day)
- 3.7. Randomness and cryptography (1 day)
- 3.8. Logging and tracing (1 day)
- 3.9. Command-line arguments, environment variables and configs (1 day)
- 3.10. Multithreading and parallelism (1 day)
- 3.11. Async I/O, futures and actors (2 days)
- 3.12. Web frameworks, databases, connection pools and ORMs (1 day)