1. Introduction
    1. Translations
  2. Idioms
    1. Use borrowed types for arguments
    2. Concatenating Strings with format!
    3. Constructor
    4. The Default Trait
    5. Collections Are Smart Pointers
    6. Finalisation in Destructors
    7. mem::{take(_), replace(_)}
    8. On-Stack Dynamic Dispatch
    9. Foreign function interface (FFI)
      1. Idiomatic Errors
      2. Accepting Strings
      3. Passing Strings
    10. Iterating over an Option
    11. Pass Variables to Closure
    12. Privacy For Extensibility
    13. Easy doc initialization
    14. Temporary mutability
    15. Return consumed arg on error
  3. Design Patterns
    1. Behavioural
      1. Command
      2. Interpreter
      3. Newtype
      4. RAII Guards
      5. Strategy
      6. Visitor
    2. Creational
      1. Builder
      2. Fold
    3. Structural
      1. Compose Structs
      2. Prefer Small Crates
      3. Contain unsafety in small modules
      4. Avoid complex type bounds with custom traits
    4. Foreign function interface (FFI)
      1. Object-Based APIs
      2. Type Consolidation into Wrappers
  4. Anti-patterns
    1. Clone to satisfy the borrow checker
    2. #[deny(warnings)]
    3. Deref Polymorphism
  5. Functional Programming
    1. Programming paradigms
    2. Generics as Type Classes
    3. Functional Optics
  6. Additional Resources
    1. Design principles