1. Welcome
    1. Syntax
  2. A Basic Calculator
    1. Integers
    2. Variables
    3. Branching: if/else
    4. Panics
    5. Factorial
    6. Loops: while
    7. Loops: for
    8. Overflow and underflow
    9. Saturating arithmetic
    10. Conversions: as casting
  3. Ticket v1
    1. Structs
    2. Validation
    3. Modules
    4. Visibility
    5. Encapsulation
    6. Ownership
    7. Setters
    8. Stack
    9. Heap
    10. References in memory
    11. Destructors
    12. Outro
  4. Traits
    1. Trait
    2. Orphan rule
    3. Operator overloading
    4. Derive macros
    5. Trait bounds
    6. String slices
    7. Deref trait
    8. Sized trait
    9. From trait
    10. Associated vs generic types
    11. Clone trait
    12. Copy trait
    13. Drop trait
    14. Outro
  5. Ticket v2
    1. Enums
    2. Branching: match
    3. Variants with data
    4. Branching: if let and let/else
    5. Nullability
    6. Fallibility
    7. Unwrap
    8. Error enums
    9. Error trait
    10. Packages
    11. Dependencies
    12. thiserror
    13. TryFrom trait
    14. Error::source
    15. Outro
  6. Ticket Management
    1. Arrays
    2. Vectors
    3. Resizing
    4. Iterators
    5. Iter
    6. Lifetimes
    7. Combinators
    8. impl Trait
    9. impl Trait, pt.2
    10. Slices
    11. Mutable slices
    12. Two states
    13. Index trait
    14. IndexMut trait
    15. HashMap
    16. BTreeMap
  7. Threads
    1. Threads
    2. 'static lifetime
    3. Leaking memory
    4. Scoped threads
    5. Channels
    6. Interior mutability
    7. Ack pattern
    8. Client
    9. Bounded channels
    10. Patching
    11. Mutex, Send and Arc
    12. RwLock
    13. Without channels
    14. Sync trait
  8. Futures
    1. Asynchronous functions
    2. Spawning tasks
    3. Runtime
    4. Future trait
    5. Blocking the runtime
    6. Async-aware primitives
    7. Cancellation
    8. Outro
  9. Going further