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