| # Analysis | 
 |  | 
 | This part discusses the many analyses that the compiler uses to check various | 
 | properties of the code and to inform later stages. Typically, this is what people | 
 | mean when they talk about "Rust's type system". This includes the | 
 | representation, inference, and checking of types, the trait system, and the | 
 | borrow checker. These analyses do not happen as one big pass or set of | 
 | contiguous passes. Rather, they are spread out throughout various parts of the | 
 | compilation process and use different intermediate representations. For example, | 
 | type checking happens on the HIR, while borrow checking happens on the MIR. | 
 | Nonetheless, for the sake of presentation, we will discuss all of these | 
 | analyses in this part of the guide. |