Types
The first section of this book covers advice that revolves around Rust's type system. This type system is more expressive than that of other mainstream languages; it has more in common with "academic" languages such as OCaml or Haskell.
One core part of this is Rust's enum
type, which is considerably more expressive than the enumeration types in
other languages, and which allows for algebraic data
types.
The other core pillar of Rust's type system is the trait
type. Traits are roughly equivalent to interface types
in other languages, but they are also tied to Rust's generics (Item 12), to allow interface re-use without runtime
overhead.