01-命名空间
命名空间 — The Rust Reference
2 分钟阅读
译文 · 基于 The Rust Reference
r[names]
r[names.intro] 实体(entity)是可在源程序中以某种方式引用的语言构造,通常通过路径引用。实体包括类型、项、泛型参数、变量绑定、循环标签、生命周期、字段、属性以及lint。
声明(declaration)是可引入名称以引用实体的语法构造。实体名称在作用域内有效——即源文本中可引用该名称的区域。
一些实体在源代码中被显式声明,另一些则作为语言或编译器扩展的一部分被隐式声明。
路径用于引用实体,该实体可能位于另一模块或类型中。
生命周期与循环标签使用带有前导引号的专用语法。
名称被分隔到不同的命名空间中,允许不同命名空间中的实体共享同一名称而不冲突。
名称解析是将路径、标识符与标签绑定到实体声明的编译期过程。
对某些名称的访问可能因其可见性而受到限制。
r[names.explicit]
r[names.explicit.list] 在源代码中显式引入名称的实体有:
r[names.explicit.item-decl]
r[names.explicit.expr]
r[names.explicit.generics]
r[names.explicit.higher-ranked-bounds]
r[names.explicit.binding]
let 语句模式绑定r[names.explicit.macro_use]
macro_use 属性可从另一 crate 引入宏名称r[names.explicit.macro_export]
macro_export 属性可为该宏在 crate 根引入别名r[names.explicit.macro-invocation] 此外,宏调用与属性可通过展开为上述项之一来引入名称。
r[names.implicit]
r[names.implicit.list] 下列实体由语言隐式定义,或由编译器选项与扩展引入:
r[names.implicit.primitive-types]
r[names.implicit.builtin-attributes]
r[names.implicit.prelude]
r[names.implicit.stdlib]
r[names.implicit.extern-prelude]
r[names.implicit.tool-attributes]
r[names.implicit.lints]
r[names.implicit.derive-helpers]
r[names.implicit.lifetime-static]
'static 生命周期r[names.implicit.root] 此外,crate 根模块没有名称,但可通过某些路径限定符或别名引用。
命名空间 — The Rust Reference
作用域 — The Rust Reference
Prelude — The Rust Reference
路径 — The Rust Reference
名称解析 — The Rust Reference
可见性与私有性 — The Rust Reference