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-fyCargo 化,使用 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 functionmain 函数,主函数
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 RustRust 开发版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 幻象电源
参见:HaskellHaskell/Phantom_type
Rust/Phantomstdlib/PhantomData
platform平台
polymorphism多态
powershell(不译)Windows 系统的一种命令行外壳程序
和脚本环境
possibility of absence不存在的可能性
precede预先?,在...发生(或出现)
prelude(不译)预先导入模块,英文本意:序曲,前奏
primitive types原生类型,基本类型,简单类型
print打印
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 clausewhere 子句,where 从句,where 分句在数据库的官方手册中多翻译成“子句”,英语语法中翻译成“从句”
wrap包裹暂译!
wrapped装包
wrapper装包
Y
yield产生(收益、效益等),产出,提供
Z
zero-cost abstractions零开销抽象
zero-width space(ZWSP)零宽空格

参考

Rust 语言术语中英文对照表

编译器相关术语表

术语中文意义
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,以及 cxtcx
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  IRLOirlo有时被用作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  型变  确定通用类型/寿命参数的变化如何影响子类型;例如,如果TU的子类型,那么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做一些很好的优化。

参考

Rust 编译器内部术语中英文对照表