附录 D:代码索引

rustc 中有大量重要的数据结构。本附录列出了一些编译器中关键的数据结构,给出了了解其细节的途径。

条目种类简述章节声明
BodyIdstruct四种 HIR 节点标识符类型之一HIR 中的标识符src/librustc/hir/mod.rs
Compilerstruct表示编译器会话,可用于驱动编译。rustc 驱动与接口src/librustc_interface/interface.rs
ast::Cratestruct经解析的 crate 的语法层面的表示解析器src/librustc/hir/mod.rs
hir::Cratestruct更加抽象的,编译器友好的 crate 的 AST 形式HIRsrc/librustc/hir/mod.rs
DefIdstruct四种 HIR 节点标识符类型之一HIR 中的标识符src/librustc/hir/def_id.rs
DiagnosticBuilderstruct用于构建编译器诊断,如错误或 lint 的结构体触发诊断src/librustc_errors/diagnostic_builder.rs
DocContextstructrustdoc 在收集 crate 的文档时所用到的状态容器Rustdocsrc/librustdoc/core.rs
HirIdstruct四种 HIR 节点标识符类型之一HIR 中的标识符src/librustc/hir/mod.rs
NodeIdstruct四种 HIR 节点标识符类型之一,正在逐步淘汰HIR 中的标识符src/libsyntax/ast.rs
Pstruct被占有的不可变智能指针。对比来说,&T 未被占有,而 Box<T> 是不可变的src/syntax/ptr.rs
ParamEnvstruct泛型形参或 Self 的相关信息,在处理关联项或泛型项时使用形参环境src/librustc/ty/mod.rs
ParseSessstruct此结构体包含有关解析器会话的信息解析器src/libsyntax/parse/mod.rs
Querystruct表示 Compiler 接口的查询结果,允许偷用、借用和返回编译器每趟的结果rustc 驱动与接口src/librustc_interface/queries.rs
Ribstruct表示名字的单个作用域名字求解src/librustc_resolve/lib.rs
Sessionstruct于编译回话关联的数据解析器rustc 驱动与接口src/librustc/session/mod.html
SourceFilestructSourceMap 的部分。将 AST 节点映射到它们的单个源文件的源码。曾名为 FileMap解析器src/libsyntax_pos/lib.rs
SourceMapstruct将 AST 节点映射到它们的源码。它由 SourceFile 组成。曾名为 CodeMap解析器src/libsyntax/source_map.rs
Spanstruct用户源码中的位置,主要用于错误报告触发诊断src/libsyntax_pos/span_encoding.rs
StringReaderstruct解析过程中使用的词法分析器。它从待编译的原始源码中读入字符,产生一系列词法标记以供解析器使用解析器src/libsyntax/parse/lexer/mod.rs
syntax::token_stream::TokenStreamstruct抽象的词法标记序列,被组织为 TokenTree解析器宏展开src/libsyntax/tokenstream.rs
TraitDefstruct此结构体包含特质的定义及其类型信息ty 模块src/librustc/ty/trait_def.rs
TraitRefstruct特质及其输入类型的组合(例如 P0: Trait<P1...Pn>特质求解:目标与子句特质求解:底层实现src/librustc/ty/sty.rs
Ty<'tcx>struct类型的内部表示,用于类型检查类型检查src/librustc/ty/mod.rs
TyCtxt<'cx, 'tcx, 'tcx>struct「定型上下文(typing context)」。它是编译器中的核心数据结构。它是用于执行各种查询的上下文ty 模块src/librustc/ty/context.rs