C.术语解释
语言元素术语表
术语 | 中文翻译 | 备注 |
---|---|---|
A | ||
Abstract Syntax Tree | 抽象语法树 | |
ABI | 应用程序二进制接口 | Application Binary Interface 缩写 |
accumulator | 累加器 | |
accumulator variable | 累加器变量 | |
ahead-of-time compiled | 预编译 | |
ahead-of-time compiled language | 预编译语言 | |
alias | 别名 | |
aliasing | 别名使用 | 参见 Wikipedia |
angle brackets | 尖括号,“<”和“>” | |
annotate | 标注,注明(动词) | |
annotation | 标注,注明(名词) | |
Arc | 原子引用计数器 | Atomic Referecne Counter |
anonymity | 匿名 | |
argument | 参数,实参,实际参数 | 不严格区分的话, argument(参数)和 parameter(参量)可以互换地使用 |
argument type | 参数类型 | |
assignment | 赋值 | |
associated functions | 关联函数 | |
associated items | 关联项 | |
associated types | 关联类型 | |
asterisk | 星号(*) | |
atomic | 原子的 | |
attribute | 属性 | |
automated building | 自动构建 | |
automated test | 自动测试,自动化测试 | |
B | ||
benchmark | 基准 | |
binary | 二进制的 | |
binary executable | 二进制的可执行文件 | |
bind | 绑定 | |
block | 语句块,代码块 | |
boolean | 布尔型,布尔值 | |
borrow check | 借用检查 | |
borrower | 借用者,借入者 | |
borrowing | 借用 | |
bound | 约束,限定,限制 | 此词和 constraint 意思相近, constraint 在 C# 语言中翻译成“约束” |
box | 箱子,盒子,装箱类型 | 一般不译,作动词时翻译成“装箱”, 具有所有权的智能指针 |
boxed | 装箱,装包 | |
boxing | 装箱,装包 | |
brace | 大括号,“{”或“}” | |
buffer | 缓冲,缓冲区,缓冲器,缓存 | |
build | 构建 | |
builder pattern | 创建者模式 | |
C | ||
call | 调用 | |
caller | 调用者 | |
capacity | 容器 | |
capture | 捕获 | |
cargo | (Rust 包管理器,不译) | 该词作名词时意思是“货物”, 作动词时意思是“装载货物” |
cargo-fy | Cargo 化,使用 Cargo 创建项目 | |
case analysis | 事例分析 | |
cast | 类型转换,转型 | |
casting | 类型转换 | |
chaining method call | 链式方法调用 | |
channel | 信道,通道 | |
closure | 闭包 | |
coercion | 强制类型转换,强制转换 | coercion 原意是“强制,胁迫” |
collection | 集合 | 参见 Wikipedia |
combinator | 组合算子,组合器 | |
comma | 逗号,“,” | |
command | 命令 | |
command line | 命令行 | |
comment | 注释 | |
compile | 编译(动词) | |
compile time | 编译期,编译期间,编译时 | |
compilation | 编译(名词) | |
compilation unit | 编译单元 | |
compiler | 编译器 | |
compiler intrinsics | 编译器固有功能 | |
compound | 复合(类型,数据) | |
concurrency | 并发 | |
conditional compilation | 条件编译 | |
configuration | 配置 | |
constructor | 构造器 | |
consumer | 消费者 | |
container | 容器 | |
container type | 容器类型 | |
convert | 转换,转化,转 | |
copy | 复制,拷贝 | |
crate | 包,包装箱,装包 | 一般不译,crate 是 Rust 的基本编译单元 |
curly braces | 大括号,包含“{”和“}” | |
custom type | 自定义类型 | |
D | ||
dangling pointer | 悬垂指针 | use after free 在释放后使用 |
data race | 数据竞争 | |
dead code | 死代码,无效代码,不可达代码 | |
deallocate | 释放,重新分配 | |
declare | 声明 | |
deep copy | 深拷贝,深复制 | |
dependency | 依赖 | |
deref coercions | 强制多态 | |
dereference | 解引用 | Rust 文章中有时简写为 Deref |
derive | 派生 | |
designator | 指示符 | |
destruction | 销毁,毁灭 | |
destructor | 析构器,析构函数 | |
destructure | 解构 | |
destructuring | 解构,解构赋值 | |
desugar | 脱糖 | |
diverge function | 发散函数 | |
device drive | 设备驱动 | |
directory | 目录 | |
dispatch | 分发 | |
diverging functions | 发散函数 | |
documentation | 文档 | |
dot operator | 点运算符 | |
DST | 动态大小类型 | dynamic sized type,一般不译, 使用英文缩写形式 |
dynamic language | 动态类型语言 | |
dynamic trait type | 动态特质类型 | |
declarative macros | 声明宏 | |
E | ||
enumeration | 枚举 | |
encapsulation | 封装 | |
equality test | 相等测试 | |
elision | 省略 | |
exhaustiveness checking | 穷尽性检查,无遗漏检查 | |
expression | 表达式 | |
expression-oriented language | 面向表达式的语言 | |
explicit | 显式 | |
explicit discriminator | 显式的辨别值 | |
explicit type conversion | 显式类型转换 | |
extension | 扩展名 | |
extern | 外,外部 | 作关键字时不译 |
F | ||
fat pointer | 胖指针 | |
feature gate | 功能开关 | |
field | 字段 | |
field-level mutability | 字段级别可变性 | |
file | 文件 | |
fmt | 格式化,是 format 的缩写 | |
formatter | 格式化程序,格式化工具,格式器 | |
floating-point number | 浮点数 | |
flow control | 流程控制 | |
Foreign Function Interface(FFI) | 外部语言函数接口 | |
fragment specifier | 片段分类符 | |
free variables | 自由变量 | |
freeze | 冻结 | |
function | 函数 | |
function declaration | 函数声明 | |
functional | 函数式 | |
G | ||
garbage collector | 垃圾回收 | |
generalize | 泛化,泛型化 | |
generator | 生成器 | |
generic | 泛型 | |
generic type | 泛型类型 | |
growable | 可增长的 | |
guard | 守卫 | |
H | ||
handle error | 句柄错误 | |
hash | 哈希,哈希值,散列 | |
hash map | 散列映射,哈希表 | |
heap | 堆 | |
hierarchy | 层次,分层,层次结构 | |
higher rank lifetime | 高阶生命周期 | |
higher rank trait bound | 高阶特质约束 | |
higher tank type | 高阶类型 | |
hygiene | 卫生 | |
hygienic macro system | 卫生宏系统 | |
I | ||
ICE | 编译内部错误 | internal comppiler error 的缩写 |
immutable | 不可变的 | |
implement | 实现 | |
implementor | 实现者 | |
implicit | 隐式 | |
implicit discriminator | 隐式的辨别值 | |
implicit type conversion | 隐式类型转换 | |
import | 导入 | |
in assignment | 在赋值(语句) | |
index | 索引 | 英语复数形式:indices |
infer | 推导(动词) | |
inference | 推导(名词) | |
inherited mutability | 承袭可变性 | |
inheritance | 继承 | |
integrated development environment(IDE) | 集成开发环境 | 中文著作中通常直接写成 IDE |
integration-style test | 集成测试 | |
interior mutability | 内部可变性 | |
installer | 安装程序,安装器 | |
instance | 实例 | |
instance method | 实例方法 | |
integer | 整型,整数 | |
interact | 相互作用,相互影响 | |
interior mutability | 内部可变性 | |
intrinsic | 固有的 | |
invoke | 调用 | |
item | 项,条目,项目 | |
iterate | 重复 | |
iteration | 迭代 | |
iterator | 迭代器 | |
iterator adaptors | 迭代器适配器 | |
iterator invalidation | 迭代器失效 | |
L | ||
LHS | 左操作数 | left-hand side 的非正式缩写, 与 RHS 相对 |
lender | 借出者 | |
library | 库 | |
lifetime | 生存期/ 寿命 / 生命周期 | |
lifetime elision | 生命周期省略 | |
link | 链接 | |
linked-list | 链表 | |
lint | (不译) | lint 英文本义是“纱布,绒毛”,此词在 计算机领域中表示程序代码中可疑和 不具结构性的片段,参见 Wikipedia |
list | 列表 | |
listener | 监听器 | |
literal | 数据,常量数据,字面值,字面量, 字面常量,字面上的 | 英文意思:字面意义的(内容) |
LLVM | (不译) | Low Level Virtual Machine 的缩写, 是构建编译器的系统 |
loop | 循环 | 作关键字时不译 |
low-level code | 底层代码 | |
low-level language | 底层语言 | |
l-value | 左值 | |
M | ||
main function | main 函数,主函数 | |
macro | 宏 | |
map | 映射 | 一般不译 |
match guard | 匹配守卫 | |
memory | 内存 | |
memory leak | 内存泄露 | |
memory safe | 内存安全 | |
meta | 原则,元 | |
metadata | 元数据 | |
metaprogramming | 元编程 | |
metavariable | 元变量 | |
method call syntax | 方法调用语法 | |
method chaining | 方法链 | |
method definition | 方法定义 | |
modifier | 修饰符 | |
module | 模块 | |
monomorphization | 单态 | mono: one, morph: form |
move | 移动,转移 | 按照 Rust 所规定的内容, 英语单词 transfer 的意思 比 move 更贴合实际描述 参考:Rust by Example |
move semantics | 移动语义 | |
mutability | 可变性 | |
mutable | 可变 | |
mutable reference | 可变引用 | |
multiple bounds | 多重约束 | |
mutiple patterns | 多重模式 | |
N | ||
nest | 嵌套 | |
Nightly Rust | Rust 开发版 | nightly本意是“每夜,每天晚上”, 指代码每天都更新 |
NLL | 非词法生命周期 | non lexical lifetime 的缩写, 一般不译 |
non-copy type | 非复制类型 | |
non-generic | 非泛型 | |
no-op | 空操作,空运算 | (此词出现在类型转换章节中) |
non-commutative | 非交换的 | |
non-scalar cast | 非标量转换 | |
notation | 符号,记号 | |
numeric | 数值,数字 | |
O | ||
optimization | 优化 | |
out-of-bounds accessing | 越界访问 | |
orphan rule | 孤儿规则 | |
overflow | 溢出,越界 | |
own | 占有,拥有 | |
owner | 所有者,拥有者 | |
ownership | 所有权 | |
P | ||
package manager | 包管理器,软件包管理器 | |
panic | (不译) | 此单词直接翻译是“恐慌”, 在 Rust 中用于不可恢复的错误处理 |
parameter | 参量,形参,形式参量 | 不严格区分的话, argument(参数)和 parameter(参量)可以互换地使用 |
parametric polymorphism | 参数多态 | |
parent scope | 父级作用域 | |
parentheses | 小括号,包括“(”和“)” | |
parse | 分析,解析 | |
parser | (语法)分析器,解析器 | |
pattern | 模式 | |
pattern match | 模式匹配 | |
phantom type | 虚类型,虚位类型 | phantom 相关的专有名词: phantom bug 幻影指令 phantom power 幻象电源 参见:Haskell、Haskell/Phantom_type、 Rust/Phantom、stdlib/PhantomData |
platform | 平台 | |
polymorphism | 多态 | |
powershell | (不译) | Windows 系统的一种命令行外壳程序 和脚本环境 |
possibility of absence | 不存在的可能性 | |
precede | 预先?,在...发生(或出现) | |
prelude | (不译) | 预先导入模块,英文本意:序曲,前奏 |
primitive types | 原生类型,基本类型,简单类型 | |
打印 | ||
process | 进程 | |
procedural macros | 过程宏,程序宏 | |
project | 项目,工程 | |
prototype | 原型 | |
R | ||
race condition | 竞态条件 | |
RAII | 资源获取即初始化(一般不译) | resource acquisition is initialization 的缩写 |
range | 区间,范围 | |
range expression | 区间表达式 | |
raw identifier | 原始标识符 | |
raw pointer | 原始指针,裸指针 | |
RC | 引用计数 | reference counted |
Reader | 读取器 | |
recursive macro | 递归宏 | |
reference | 引用 | |
reference cycle | 引用循环 | |
release | 发布 | |
resource | 资源 | |
resource leak | 资源泄露 | |
RHS | 右操作数 | right-hand side 的非正式缩写, 与 LHS 相对 |
root directory | 根目录 | |
runtime | 运行时 | |
runtime behavior | 运行时行为 | |
runtime overhead | 运行时开销 | |
Rust | (不译) | 一种编程语言 |
Rustacean | (不译) | 编写 Rust 的程序员或爱好者的通称 |
rustc | (不译) | Rust 语言编译器 |
r-value | 右值 | |
S | ||
scalar | 标量,数量 | |
schedule | 调度 | |
scope | 作用域 | |
screen | 屏幕 | |
script | 脚本 | |
semicolon | 分号,“;” | |
self | 自身,作关键字时不译 | |
shadow | 遮蔽,隐蔽,隐藏,覆盖 | |
shallow copy | 浅拷贝,浅复制 | |
signature | 标记 | |
slice | 切片 | |
snake case | 蛇形命名 | 参见:Snake case |
source file | 源文件 | |
source code | 源代码 | |
specialization | 泛型特化 | |
square | 平方,二次方,二次幂 | |
square brackets | 中括号,“[”和“]” | |
src | (不译) | source 的缩写,指源代码 |
stack | 栈 | |
stack unwind | 栈解开、栈展开 | |
statement | 语句 | |
statically allocated | 静态分配 | |
statically allocated string | 静态分配的字符串 | |
statically dispatch | 静态分发 | |
static method | 静态方法 | |
string | 字符串 | |
string literal | 字符串常量 | |
string slices | 字符串片段 | |
stringify | 字符串化 | |
subscript notation | 下标 | |
sugar | 糖 | |
super | 父级,作关键字时不译 | |
syntax context | 语法上下文 | |
systems programming language | 系统级编程语言 | |
T | ||
tagged union | 标记联合 | |
target triple | 多层次指标,三层/重 指标/目标 | triple 本义是“三”,但此处虚指“多”, 此词翻译需要更多讨论 |
terminal | 终端 | |
testing | 测试 | |
testsuit | 测试套件 | |
the least significant bit (LSB) | 最低数字位 | |
the most significant bit (MSB) | 最高数字位 | |
thread | 线程 | |
TOML | (不译) | Tom's Obvious, Minimal Language 的缩写,一种配置语言 |
token tree | 令牌树? | 待进一步斟酌 |
trait | 特质 | 其字面上有“特性,特征”之意 |
trait bound | 特质约束 | bound 有“约束,限制,限定”之意 |
trait object | 特质对象 | |
transmute | (不译) | 其字面上有“变化,变形,变异”之意, 不作翻译 |
trivial | 平凡的 | |
troubleshooting | 疑难解答,故障诊断, 故障排除,故障分析 | |
tuple | 元组 | |
two's complement | 补码,二补数 | |
two-word object | 双字对象 | |
type annotation | 类型标注 | |
type erasure | 类型擦除 | |
type inference | 类型推导 | |
type inference engine | 类型推导引擎 | |
type parameter | 类型参量 | |
type placeholder | 类型占位符 | |
type signature | 类型标记 | |
U | ||
undefined behavior | 未定义行为 | |
uninstall | 卸载 | |
unit-like struct | 类单元结构体 | |
unit struct | 单元结构体 | |
"unit-style" tests | 单元测试 | |
unit test | 单元测试 | |
unit type | 单元类型 | |
universal function call syntax (UFCS) | 通用函数调用语法 | |
unsized types | 不定长类型 | |
unwind | 展开 | |
unwrap | 解包 | 暂译! |
V | ||
variable binding | 变量绑定 | |
variable shadowing | 变量遮蔽,变量隐蔽, 变量隐藏,变量覆盖 | |
variable capture | 变量捕获 | |
variant | 变量 | |
vector | (动态数组,一般不译) | vector 本义是“向量” |
visibility | 可见性 | |
vtable | 虚表 | |
W | ||
where clause | where 子句,where 从句,where 分句 | 在数据库的官方手册中多翻译成“子句”,英语语法中翻译成“从句” |
wrap | 包裹 | 暂译! |
wrapped | 装包 | |
wrapper | 装包 | |
Y | ||
yield | 产生(收益、效益等),产出,提供 | |
Z | ||
zero-cost abstractions | 零开销抽象 | |
zero-width space(ZWSP) | 零宽空格 |
参考
编译器相关术语表
术语 | 中文 | 意义 |
---|---|---|
arena/arena allocation | 竞技场分配 | arena 是一个大内存缓冲区,从中可以进行其他内存分配,这种分配方式称为竞技场分配。 |
AST | 抽象语法树 | 由rustc_ast crate 产生的抽象语法树。 |
binder | 绑定器 | 绑定器是声明变量和类型的地方。例如,<T> 是fn foo<T>(..) 中泛型类型参数 T 的绑定器,以及 |a | ... 是 参数a 的绑定器。 |
BodyId | 主体ID | 一个标识符,指的是crate 中的一个特定主体(函数或常量的定义)。 |
bound variable | 绑定变量 | "绑定变量 "是在表达式/术语中声明的变量。例如,变量a 被绑定在闭包表达式中|a | a * 2 。 |
codegen | 代码生成 | 由 MIR 转译为 LLVM IR。 |
codegen unit | 代码生成单元 | 当生成LLVM IR时,编译器将Rust代码分成若干个代码生成单元(有时缩写为CGU)。这些单元中的每一个都是由LLVM独立处理的,实现了并行化。它们也是增量编译的单位。 |
completeness | 完整性 | 类型理论中的一个技术术语,它意味着每个类型安全的程序也会进行类型检查。同时拥有健全性(soundness)和完整性(completeness)是非常困难的,而且通常健全性(soundness)更重要。 |
control-flow graph | 控制流图 | 程序的控制流表示。 |
CTFE | 编译时函数求值 | 编译时函数求值(Compile-Time Function Evaluation)的简称,是指编译器在编译时计算 "const fn "的能力。这是编译器常量计算系统的一部分。 |
cx | 上下文 | Rust 编译器内倾向于使用 "cx "作为上下文的缩写。另见 "tcx"、"infcx "等。 |
ctxt | 上下文(另一个缩写) | 我们也使用 "ctxt "作为上下文的缩写,例如, TyCtxt ,以及 cx 或 tcx。 |
DAG | 有向无环图 | 在编译过程中,一个有向无环图被用来跟踪查询之间的依赖关系 |
data-flow analysis | 数据流分析 | 静态分析,找出程序控制流中每一个点的属性。 |
DeBruijn Index | 德布鲁因索引 | 一种只用整数来描述一个变量被绑定的绑定器的技术。它的好处是,在变量重命名下,它是不变的。 |
DefId | 定义Id | 一个识别定义的索引(见rustc_middle/src/hir/def_id.rs )。DefPath 的唯一标识。 |
discriminant | 判别式 | 与枚举变体或生成器状态相关的基础值,以表明它是 "激活的(avtive)"(但不要与它的"变体索引"混淆)。在运行时,激活变体的判别值被编码在tag中。 |
double pointer | 双指针 | 一个带有额外元数据的指针。同指「胖指针」。 |
drop glue | drop胶水 | (内部)编译器生成的指令,处理调用数据类型的析构器(Drop )。 |
DST | DST | Dynamically-Sized Type的缩写,这是一种编译器无法静态知道内存大小的类型(例如:str'或 [u8])。这种类型没有实现 Sized,不能在栈中分配。它们只能作为结构中的最后一个字段出现。它们只能在指针后面使用(例如: &str或 &[u8]`)。 |
early-bound lifetime | 早绑定生存期 | 一个在其定义处被替换的生存期区域(region)。绑定在一个项目的Generics'中,并使用 Substs'进行替换。与late-bound lifetime形成对比。 |
empty type | 空类型 | 参考 "uninhabited type". |
fat pointer | 胖指针 | 一个两字(word)的值,携带着一些值的地址,以及一些使用该值所需的进一步信息。Rust包括两种 "胖指针":对切片(slice)的引用和特质(trait)对象。对切片的引用带有切片的起始地址和它的长度。特质对象携带一个值的地址和一个指向适合该值的特质实现的指针。"胖指针 "也被称为 "宽指针",和 "双指针"。 |
free variable | 自由变量 | 自由变量 是指没有被绑定在表达式或术语中的变量; |
generics | 泛型 | 通用类型参数集。 |
HIR | 高级中间语言 | 高级中间语言,通过对AST进行降级(lowering)和去糖(desugaring)而创建。 |
HirId | HirId | 通过结合“def-id”和 "intra-definition offset"来识别HIR中的一个特定节点。 |
HIR map | HIR map | 通过tcx.hir() 访问的HIR Map,可以让你快速浏览HIR并在各种形式的标识符之间进行转换。 |
ICE | ICE | 内部编译器错误的简称,这是指编译器崩溃的情况。 |
ICH | ICH | 增量编译哈希值的简称,它们被用作HIR和crate metadata等的指纹,以检查是否有变化。这在增量编译中是很有用的,可以查看crate的一部分是否发生了变化,应该重新编译。 |
infcx | 类型推导上下文 | 类型推导上下文(InferCtxt )。 |
inference variable | 推导变量 | 在进行类型或区域推理时,"推导变量 "是一种特殊的类型/区域,代表你试图推理的内容。想想代数中的X。例如,如果我们试图推断一个程序中某个变量的类型,我们就创建一个推导变量来代表这个未知的类型。 |
intern | intern | intern是指存储某些经常使用的常量数据,如字符串,然后用一个标识符(如`符号')而不是数据本身来引用这些数据,以减少内存的使用和分配的次数。 |
intrinsic | 内部函数 | 内部函数是在编译器本身中实现的特殊功能,但向用户暴露(通常是不稳定的)。它们可以做神奇而危险的事情。 |
IR | IR | Intermediate Representation的简称,是编译器中的一个通用术语。在编译过程中,代码被从原始源码(ASCII文本)转换为各种IR。在Rust中,这些主要是HIR、MIR和LLVM IR。每种IR都适合于某些计算集。例如,MIR非常适用于借用检查器,LLVM IR非常适用于codegen,因为LLVM接受它。 |
IRLO | IRLO | IRLO 或irlo 有时被用作internals.rust-lang.org的缩写。 |
item | 语法项 | 语言中的一种 "定义",如静态、常量、使用语句、模块、结构等。具体来说,这对应于 "item"类型。 |
lang item | 语言项 | 代表语言本身固有的概念的项目,如特殊的内置特质,如同步 和发送 ;或代表操作的特质,如添加 ;或由编译器调用的函数。 |
late-bound lifetime | 晚绑定生存期 | 一个在其调用位置被替换的生存期区域。绑定在HRTB中,由编译器中的特定函数替代,如liberate_late_bound_regions 。与早绑定的生存期形成对比。 |
local crate | 本地crate | 目前正在编译的crate。这与 "上游crate"相反,后者指的是本地crate的依赖关系。 |
LTO | LTO | 链接时优化(Link-Time Optimizations)的简称,这是LLVM提供的一套优化,在最终二进制文件被链接之前进行。这些优化包括删除最终程序中从未使用的函数,例如。_ThinLTO_是LTO的一个变种,旨在提高可扩展性和效率,但可能牺牲了一些优化。 |
LLVM | LLVM | (实际上不是一个缩写 :P) 一个开源的编译器后端。它接受LLVM IR并输出本地二进制文件。然后,各种语言(例如Rust)可以实现一个编译器前端,输出LLVM IR,并使用LLVM编译到所有LLVM支持的平台。 |
memoization | memoization | 储存(纯)计算结果(如纯函数调用)的过程,以避免在未来重复计算。这通常是执行速度和内存使用之间的权衡。 |
MIR | 中级中间语言 | 在类型检查后创建的中级中间语言,供borrowck和codegen使用。 |
miri | mir解释器 | MIR的一个解释器,用于常量计算。 |
monomorphization | 单态化 | 采取类型和函数的通用实现并将其与具体类型实例化的过程。例如,在代码中可能有Vec<T> ,但在最终的可执行文件中,将为程序中使用的每个具体类型有一个Vec 代码的副本(例如,Vec<usize> 的副本,Vec<MyStruct> 的副本,等等)。 |
normalize | 归一化 | 转换为更标准的形式的一般术语,但在rustc的情况下,通常指的是关联类型归一化。 |
newtype | newtype | 对其他类型的封装(例如,struct Foo(T) 是T 的一个 "新类型")。这在Rust中通常被用来为索引提供一个更强大的类型。 |
niche | 利基 | 一个类型的无效位模式可用于布局优化。有些类型不能有某些位模式。例如,"非零*"整数或引用"&T "不能用0比特串表示。这意味着编译器可以通过利用无效的 "利基值 "来进行布局优化。这方面的一个应用实例是Discriminant elision on Option -like enums,它允许使用一个类型的niche作为一个enum 的"标签",而不需要一个单独的字段。 |
NLL | NLL | 这是非词法作用域生存期的简称,它是对Rust的借用系统的扩展,使其基于控制流图。 |
node-id or NodeId | node-id or NodeId | 识别AST或HIR中特定节点的索引;逐渐被淘汰,被HirId 取代。 |
obligation | obligation | 必须由特质系统证明的东西。 |
placeholder | placeholder | 注意:skolemization被placeholder废弃一种处理围绕 "for-all "类型的子类型的方法(例如,for<'a> fn(&'a u32) ),以及解决更高等级的trait边界(例如,for<'a> T: Trait<'a> )。 |
point | point | 在NLL分析中用来指代MIR中的某个特定位置;通常用来指代控制流图中的一个节点。 |
polymorphize | 多态化 | 一种避免不必要的单态化的优化。 |
projection | 投影 | 一个 "相对路径 "的一般术语,例如,x.f 是一个 "字段投影",而T::Item 是一个"关联类型投影" |
promoted constants | 常量提升 | 从函数中提取的常量,并提升到静态范围 |
provider | provider | 执行查询的函数。 |
quantified | 量化 | 在数学或逻辑学中,存在量词和普遍量词被用来提出诸如 "是否有任何类型的T是真的?"或 "这对所有类型的T都是真的吗?"这样的问题 |
query | 查询 | 编译过程中的一个子计算。查询结果可以缓存在当前会话中,也可以缓存到磁盘上,用于增量编译。 |
recovery | 恢复 | 恢复是指在解析过程中处理无效的语法(例如,缺少逗号),并继续解析AST。这可以避免向用户显示虚假的错误(例如,当结构定义包含错误时,显示 "缺少字段 "的错误)。 |
region | 区域 | 和生存期精彩使用的另一个术语。 |
rib | rib | 名称解析器中的一个数据结构,用于跟踪名称的单一范围。 |
scrutinee | 审查对象 | 审查对象是在match 表达式和类似模式匹配结构中被匹配的表达式。例如,在match x { A => 1, B => 2 } 中,表达式x 是被审查者。 |
sess | sess | 编译器会话,它存储了整个编译过程中使用的全局数据 |
side tables | side tables | 由于AST和HIR一旦创建就不可改变,我们经常以哈希表的形式携带关于它们的额外信息,并以特定节点的ID为索引。 |
sigil | 符号 | 就像一个关键词,但完全由非字母数字的标记组成。例如,& 是引用的标志。 |
soundness | 健全性 | 类型理论中的一个技术术语。粗略的说,如果一个类型系统是健全的,那么一个进行类型检查的程序就是类型安全的。也就是说,人们永远不可能(在安全的Rust中)把一个值强加到一个错误类型的变量中。 |
span | span | 用户的源代码中的一个位置,主要用于错误报告。这就像一个文件名/行号/列的立体元组:它们携带一个开始/结束点,也跟踪宏的扩展和编译器去糖。所有这些都被装在几个字节里(实际上,它是一个表的索引)。 |
substs | 替换 | 给定的通用类型或项目的替换(例如,HashMap<i32, u32> 中的i32'、 u32')。 |
sysroot | sysroot | 用于编译器在运行时加载的构建工件的目录。 |
tag | tag | 枚举/生成器的 "标签 "编码激活变体/状态的判别式(discriminant)。 标签可以是 "直接的"(简单地将判别式存储在一个字段中)或使用"利基"。 |
tcx | tcx | "类型化上下文"(TyCtxt ),编译器的主要数据结构。 |
'tcx | 'tcx | TyCtxt'所使用的分配区域的生存期。在编译过程中,大多数数据都会使用这个生存期,但HIR数据除外,它使用 'hir`生存期。 |
token | 词条 | 解析的最小单位。词条是在词法运算后产生的 |
TLS | TLS | 线程本地存储。变量可以被定义为每个线程都有自己的副本(而不是所有线程都共享该变量)。这与LLVM有一些相互作用。并非所有平台都支持TLS。 |
trait reference | trait 引用 | 一个特质的名称,以及一组合适的输入类型/生存期。 |
trans | trans | 是 "转译"的简称,是将MIR转译成LLVM IR的代码。已经重命名为codegen。 |
Ty | Ty | 一个类型的内部表示。 |
TyCtxt | TyCtxt | 在代码中经常被称为tcx的数据结构,它提供对会话数据和查询系统的访问。 |
UFCS | UFCS | 通用函数调用语法(Universal Function Call Syntax)的简称,这是一种调用方法的明确语法。 |
uninhabited type | 孤类型 | 一个没有值的类型。这与ZST不同,ZST正好有一个值。一个孤类型的例子是enum Foo {} ,它没有变体,所以,永远不能被创建。编译器可以将处理孤类型的代码视为死代码,因为没有这样的值可以操作。! (从未出现过的类型)是一个孤类型。孤类型也被称为 "空类型"。 |
upvar | upvar | 一个闭合体从闭合体外部捕获的变量 |
variance | 型变 | 确定通用类型/寿命参数的变化如何影响子类型;例如,如果T 是U 的子类型,那么Vec<T> 是Vec<U> 的子类型,因为Vec 在其通用参数中是协变的。 |
variant index | 变体索引 | 在一个枚举中,通过给它们分配从0开始的索引来识别一个变体。这纯粹是内部的,不要与"判别式"相混淆,后者可以被用户覆盖(例如,enum Bool { True = 42, False = 0 } )。 |
wide pointer | 宽指针 | 一个带有额外元数据的指针。 |
ZST | ZST | 零大小类型。这种类型,其值的大小为0字节。由于2^0 = 1 ,这种类型正好有一个值。例如,() (单位)是一个ZST。struct Foo; 也是一个ZST。编译器可以围绕ZST做一些很好的优化。 |
参考