- Introduction
- Part I — Foundations
- 1. 1. Introduction and Motivation
- 1.1. Why C/C++ Developers Need Rust
- 2. 2. Getting Started
- 3. 3. Built-in Types
- 4. 4. Control Flow
- 5. 5. Data Structures
- 6. 6. Enums and Pattern Matching
- 7. 7. Ownership and Borrowing
- 7.1. Lifetimes and Borrowing Deep Dive
- 7.2. Smart Pointers and Interior Mutability
- 8. 8. Crates and Modules
- 8.1. Testing Patterns
- 9. 9. Error Handling
- 9.1. Error Handling Best Practices
- 10. 10. Traits
- 10.1. Generics
- 11. 11. From and Into Traits
- 12. 12. Closures
- 12.1. Iterator Power Tools
- 13. 13. Concurrency
- 14. 14. Unsafe Rust and FFI
- Part II — Deep Dives
- 15. 15. no_std — Rust Without the Standard Library
- 15.1. Embedded Deep Dive
- 16. 16. Case Studies: Real-World C++ to Rust
- 16.1. Case Studies 3–5: Lifetimes, Composability, Trait Objects
- Part III — Best Practices & Reference
- 17. 17. Best Practices
- 17.1. Avoiding Excessive clone()
- 17.2. Avoiding Unchecked Indexing
- 17.3. Collapsing Assignment Pyramids
- 17.4. Logging and Tracing Ecosystem
- 18. 18. C++ → Rust Semantic Deep Dives
- 19. 19. Rust Macros: From Preprocessor to Metaprogramming