Appendix D: Code Index

rustc has a lot of important data structures. This is an attempt to give some guidance on where to learn more about some of the key data structures of the compiler.

Item Kind Short description Chapter Declaration
BodyId struct One of four types of HIR node identifiers Identifiers in the HIR src/librustc/hir/
Compiler struct Represents a compiler session and can be used to drive a compilation. The Rustc Driver and Interface src/librustc_interface/
ast::Crate struct A syntax-level representation of a parsed crate The parser src/librustc/hir/
hir::Crate struct A more abstract, compiler-friendly form of a crate's AST The Hir src/librustc/hir/
DefId struct One of four types of HIR node identifiers Identifiers in the HIR src/librustc/hir/
DiagnosticBuilder struct A struct for building up compiler diagnostics, such as errors or lints Emitting Diagnostics src/librustc_errors/
DocContext struct A state container used by rustdoc when crawling through a crate to gather its documentation Rustdoc src/librustdoc/
HirId struct One of four types of HIR node identifiers Identifiers in the HIR src/librustc/hir/
NodeId struct One of four types of HIR node identifiers. Being phased out Identifiers in the HIR src/libsyntax/
P struct An owned immutable smart pointer. By contrast, &T is not owned, and Box<T> is not immutable. None src/syntax/
ParamEnv struct Information about generic parameters or Self, useful for working with associated or generic items Parameter Environment src/librustc/ty/
ParseSess struct This struct contains information about a parsing session The parser src/libsyntax/parse/
Query struct Represents the result of query to the Compiler interface and allows stealing, borrowing, and returning the results of compiler passes. The Rustc Driver and Interface src/librustc_interface/
Rib struct Represents a single scope of names Name resolution src/librustc_resolve/
Session struct The data associated with a compilation session The parser, The Rustc Driver and Interface src/librustc/session/mod.html
SourceFile struct Part of the SourceMap. Maps AST nodes to their source code for a single source file. Was previously called FileMap The parser src/libsyntax_pos/
SourceMap struct Maps AST nodes to their source code. It is composed of SourceFiles. Was previously called CodeMap The parser src/libsyntax/
Span struct A location in the user's source code, used for error reporting primarily Emitting Diagnostics src/libsyntax_pos/
StringReader struct This is the lexer used during parsing. It consumes characters from the raw source code being compiled and produces a series of tokens for use by the rest of the parser The parser src/libsyntax/parse/lexer/
syntax::token_stream::TokenStream struct An abstract sequence of tokens, organized into TokenTrees The parser, Macro expansion src/libsyntax/
TraitDef struct This struct contains a trait's definition with type information The ty modules src/librustc/ty/
TraitRef struct The combination of a trait and its input types (e.g. P0: Trait<P1...Pn>) Trait Solving: Goals and Clauses, Trait Solving: Lowering impls src/librustc/ty/
Ty<'tcx> struct This is the internal representation of a type used for type checking Type checking src/librustc/ty/
TyCtxt<'tcx> struct The "typing context". This is the central data structure in the compiler. It is the context that you use to perform all manner of queries The ty modules src/librustc/ty/