- enums
- error handling / options
- pattern matching
- macros
- separation of data/code
- trait vs. protocol

Advantages
- Extremely well designed type system
- memory safety
- enums pattern matching
- installation of binaries not scripts, no runtime needed
- datatype oriented modelling

ripgrep
kernel memory safety

Disadvantages
- Hard to read
- different phases of errors
- No Shell, Debugging harder
- Strict, hard to get it to compile and test something
- unsafe is really hard
- lifetimes are hard
- Need to know about Memory Heap/Stack etc mental model

- different languages:
  - Rust
  - Unsafe != C
  - Types
  - Lifetimes
  - Macros
  - Attribute language
