名称
一个实体是可以在源代码中以某种方式引用的语言构造,通常通过路径。 实体包括类型、项、泛型参数、变量绑定、循环标签、生命周期、字段、属性和lints。
一个声明是一个语法构造,可以引入一个名称来引用一个实体。 实体名称在作用域内有效——作用域是指可以在其中引用该名称的源代码区域。
有些实体在源代码中是显式声明的,有些是作为语言或编译器扩展的一部分隐式声明的。
路径用于引用实体,可能在另一个模块或类型中。生命周期和循环标签使用带有前导引号的专用语法。
名称被隔离到不同的命名空间中,允许不同命名空间中的实体共享相同的名称而不会冲突。
名称解析是将路径、标识符和标签绑定到实体声明的编译时过程。
对某些名称的访问可能会基于其可见性受到限制。
显式声明的实体
在源代码中显式引入名称的实体有:
- 项:
- 表达式:
- 泛型参数
- 高阶 trait bounds
let
语句模式绑定macro_use
属性可以从另一个 crate 引入宏名称macro_export
属性可以将宏的别名引入 crate 根
隐式声明的实体
以下实体是由语言隐式定义的,或者由编译器选项和扩展引入的:
- 语言序曲:
- 内置属性
- 标准库序曲项、属性和宏
- 标准库根模块中的 crate
- 编译器链接的外部 crate
- 工具属性
- Lints 和 tool lint 属性
- Derive 辅助属性在项内有效,无需显式导入
'static
生命周期
此外,crate 根模块没有名称,但可以使用某些路径限定符或别名来引用。