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. Patterns
  22. Adapter pattern
  23. Visitor pattern and double dispatch
  24. Curiously recurring template pattern (CRTP)
  25. Pointer-to-implementation (PIMPL)
  26. Ecosystem
  27. Libraries
  28. Tests
  29. Documentation (e.g., Doxygen)
  30. Build systems (e.g., CMake)
  31. Attribution notices