Types
This first chapter 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 Items in this chapter cover the fundamental types that the language provides and how to combine them into data structures that precisely express the semantics of your program. This concept of encoding behavior into the type system helps to reduce the amount of checking and error path code that's required, because invalid states are rejected by the toolchain at compile time rather than by the program at runtime.
This chapter also describes some of the ubiquitous data structures that are provided by Rust's standard library:
Option
s, Result
s, Error
s and Iterator
s. Familiarity with these standard tools will help you write idiomatic
Rust that is efficient and compact—in particular, they allow use of Rust's question mark operator, which
supports error handling that is unobtrusive but still type-safe.
Note that Items that involve Rust traits are covered in the following chapter, but there is necessarily a degree of overlap with the Items in this chapter, because traits describe the behavior of types.