语法
项 (Item):
   外部属性 (OuterAttribute)*
      可见项 (VisItem)
   | 宏项 (MacroItem)

可见项 (VisItem):
   可见性 (Visibility)?
   (
         模块 (Module)
      | 外部 crate (ExternCrate)
      | use 声明 (UseDeclaration)
      | 函数 (Function)
      | 类型别名 (TypeAlias)
      | 结构体 (Struct)
      | 枚举 (Enumeration)
      | 联合体 (Union)
      | 常量项 (ConstantItem)
      | 静态项 (StaticItem)
      | trait (Trait)
      | 实现 (Implementation)
      | extern 块 (ExternBlock)
   )

宏项 (MacroItem):
      宏调用并带分号 (MacroInvocationSemi)
   | macro_rules 定义 (MacroRulesDefinition)

一个 项(item) 是一个 crate 的组成部分。项通过一套嵌套的模块组织在一个 crate 内部。每个 crate 都有一个单独的“最外层”匿名模块;crate 内的所有其他项在 crate 的模块树中都有其路径

项完全在编译时确定,通常在执行期间保持固定,并且可能驻留在只读内存中。

有几种类型的项

项可以声明在crate 的根、一个模块或一个块表达式中。

项的一个子集,称为关联项,可以声明在trait实现中。

项的一个子集,称为外部项,可以声明在extern中。

除了 macro_rules 有其自身的范围行为外,项可以按任意顺序定义。

项名称的名称解析允许项在其在模块或块中被引用之前或之后定义。

关于项的范围规则的信息,请参阅项范围