附录 D:代码索引
rustc 中有大量重要的数据结构。本附录列出了一些编译器中关键的数据结构,给出了了解其细节的途径。
条目 | 种类 | 简述 | 章节 | 声明 |
---|---|---|---|---|
BodyId | struct | 四种 HIR 节点标识符类型之一 | HIR 中的标识符 | src/librustc/hir/mod.rs |
Compiler | struct | 表示编译器会话,可用于驱动编译。 | rustc 驱动与接口 | src/librustc_interface/interface.rs |
ast::Crate | struct | 经解析的 crate 的语法层面的表示 | 解析器 | src/librustc/hir/mod.rs |
hir::Crate | struct | 更加抽象的,编译器友好的 crate 的 AST 形式 | HIR | src/librustc/hir/mod.rs |
DefId | struct | 四种 HIR 节点标识符类型之一 | HIR 中的标识符 | src/librustc/hir/def_id.rs |
DiagnosticBuilder | struct | 用于构建编译器诊断,如错误或 lint 的结构体 | 触发诊断 | src/librustc_errors/diagnostic_builder.rs |
DocContext | struct | rustdoc 在收集 crate 的文档时所用到的状态容器 | Rustdoc | src/librustdoc/core.rs |
HirId | struct | 四种 HIR 节点标识符类型之一 | HIR 中的标识符 | src/librustc/hir/mod.rs |
NodeId | struct | 四种 HIR 节点标识符类型之一,正在逐步淘汰 | HIR 中的标识符 | src/libsyntax/ast.rs |
P | struct | 被占有的不可变智能指针。对比来说,&T 未被占有,而 Box<T> 是不可变的 | 无 | src/syntax/ptr.rs |
ParamEnv | struct | 泛型形参或 Self 的相关信息,在处理关联项或泛型项时使用 | 形参环境 | src/librustc/ty/mod.rs |
ParseSess | struct | 此结构体包含有关解析器会话的信息 | 解析器 | src/libsyntax/parse/mod.rs |
Query | struct | 表示 Compiler 接口的查询结果,允许偷用、借用和返回编译器每趟的结果 | rustc 驱动与接口 | src/librustc_interface/queries.rs |
Rib | struct | 表示名字的单个作用域 | 名字求解 | src/librustc_resolve/lib.rs |
Session | struct | 于编译回话关联的数据 | 解析器,rustc 驱动与接口 | src/librustc/session/mod.html |
SourceFile | struct | SourceMap 的部分。将 AST 节点映射到它们的单个源文件的源码。曾名为 FileMap | 解析器 | src/libsyntax_pos/lib.rs |
SourceMap | struct | 将 AST 节点映射到它们的源码。它由 SourceFile 组成。曾名为 CodeMap | 解析器 | src/libsyntax/source_map.rs |
Span | struct | 用户源码中的位置,主要用于错误报告 | 触发诊断 | src/libsyntax_pos/span_encoding.rs |
StringReader | struct | 解析过程中使用的词法分析器。它从待编译的原始源码中读入字符,产生一系列词法标记以供解析器使用 | 解析器 | src/libsyntax/parse/lexer/mod.rs |
syntax::token_stream::TokenStream | struct | 抽象的词法标记序列,被组织为 TokenTree | 解析器,宏展开 | src/libsyntax/tokenstream.rs |
TraitDef | struct | 此结构体包含特质的定义及其类型信息 | ty 模块 | src/librustc/ty/trait_def.rs |
TraitRef | struct | 特质及其输入类型的组合(例如 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 |