Items

程序项

items.md
commit: 524b9b1efdfdef603d9617d8e1476b66b99a6349
本章译文最后维护日期:2024-06-15

句法:
Item:
   OuterAttribute*
      VisItem
   | MacroItem

VisItem:
   Visibility?
   (
         Module
      | ExternCrate
      | UseDeclaration
      | Function
      | TypeAlias
      | Struct
      | Enumeration
      | Union
      | ConstantItem
      | StaticItem
      | Trait
      | Implementation
      | ExternBlock
   )

MacroItem:
      MacroInvocationSemi
   | MacroRulesDefinition

*程序项*是 crate 的组成单元。程序项由一套嵌套的模块被组织在一个 crate 内。每个 crate 都有一个“最外层”的匿名模块;crate 中所有的程序项都在其 crate 的模块树中自己的路径

程序项在编译时就完全确定下来了,通常在执行期间保持结构稳定,并可以驻留在只读内存中。

有以下几类程序项:

程序项可以声明在crate的根层中、模块中或一个块表达式中。 关联程序项,程序项的的一种子集,可以声明在 traits实现中。 外部程序项,程序项的的一种子集,它可以声明在外部块中。

程序项可以以任意顺序定义,但 macro_rules 例外,它有自己特有的作用域行为表象。 程序项名称的名称解析规则允许在模块或块中引用程序项的位置之前或之后定义该程序项。

有关程序项的作用域规则的信息,请参阅程序项作用域章节。