items.md
commit - b0e0ad6490d6517c19546b1023948986578fc378 - 2019-07-16

Syntax:
Item:
   OuterAttribute*
      VisItem
   | MacroItem

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

MacroItem:
      MacroInvocationSemi
   | MacroRulesDefinition

项(item) 是 crate 的一个组件。项在 crate 中被组织为一个嵌套的模块集。每个 crate 都有一个单独的“最外层”的匿名模块;crate 中的所有其它项,在 crate 中的模块树中都有路径。

项全部在编译时被确定,大部分在执行期间保持不变,并可能驻留在只读内存中。

项有以下几种类型:

这些范围内的项与定义在作用域外声明的项是一样的--它仍是一个静态项--除了那些位于模块命名空间中的路径名称由包含其中的项的名字定义的项,或者是其包含的私有项(对于函数来说)。

有些项组成了子项声明的隐式作用域。换句话说,在一个函数或模块中,项的声明可以(在许多情况下)与语句、控制块和类似的构件混合在一起,否则这些构件将构成项体。这些作用域内的项的含义与在作用域外声明的项的含义相同——它仍然是静态项——只是模块命名空间中的项的 路径名 由包含该项的封闭项名称限定,或者是包含该项的封闭项的私有项(对于函数来说)。由语法指定子项声明可能出现的确切位置。