1. C++ to Rust Phrasebook
  2. Idioms
  3. Constructors
    1. Default constructors
    2. Copy and move constructors
    3. Rule of three/five/zero
  4. Destructors and resource cleanup
  5. Data modeling
    1. Abstract classes, interfaces, and dynamic dispatch
    2. Concepts, interfaces, and static dispatch
    3. Enums
    4. Tagged unions and std::variant
    5. Inheritance and implementation reuse
    6. Template classes, functions, and methods
    7. Template specialization
  6. Null (nullptr)
    1. Sentinel values
    2. Moved members
    3. Zero-length arrays
  7. Encapsulation
    1. Header files
    2. Anonymous namespaces and static
    3. Private members and friends
    4. Private constructors
    5. Setter and getter methods
  8. Exceptions and error handling
    1. Expected errors
    2. Errors indicating bugs
  9. Type equivalents
  10. Type promotions and conversions
  11. User-defined conversions
  12. Overloading
  13. RTTI and dynamic_cast
  14. Iterators and ranges
  15. Lambdas, closures, and function objects
  16. Object identity
  17. Out parameters
    1. Multiple return values
    2. Optional return values
    3. Pre-allocated buffers
  18. Rust and C++ interoperability (FFI)
  19. NRVO and RVO
  20. Placement new
  21. Concurrency (threads and async)
  22. Patterns
  23. Adapter pattern
  24. Visitor pattern and double dispatch
  25. Curiously recurring template pattern (CRTP)
  26. Pointer-to-implementation (PIMPL)
  27. Ecosystem
  28. Libraries
  29. Tests
  30. Documentation (e.g., Doxygen)
  31. Build systems (e.g., CMake)
  32. Attribution notices