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
  15. Function objects, lambdas, and closures
  16. Object identity
  17. Out parameters
    1. Multiple return values
    2. Optional return values
    3. Pre-allocated buffers
  18. Varargs
  19. Attributes
  20. Calling C (FFI)
  21. NRVO, RVO, and placement new
  22. Concurrency (threads and async)
  23. Patterns
  24. Adapter pattern
  25. Visitor pattern and double dispatch
  26. Curiously recurring template pattern (CRTP)
  27. Pointer-to-implementation (PImpl)
  28. X macros
  29. Ecosystem
  30. Libraries
  31. Unit tests
  32. Documentation (Doxygen)
  33. Build systems (CMake)
  34. Attribution notices