Элементы
Syntax
Item →
OuterAttribute* ( VisItem | MacroItem )
VisItem →
Visibility?
(
Module
| ExternCrate
| UseDeclaration
| Function
| TypeAlias
| Struct
| Enumeration
| Union
| ConstantItem
| StaticItem
| Trait
| Implementation
| ExternBlock
)
Элемент - это компонент крейта. Элементы организуются внутри крейта с помощью вложенной системы модулей. Каждый крейт имеет один “внешний” анонимный модуль; все остальные элементы внутри крейта имеют пути в дереве модулей крейта.
Элементы полностью определяются во время компиляции, обычно остаются неизменными в течение выполнения и могут находиться в памяти только для чтения.
Существует несколько видов элементов:
- modules
- объявления
extern crate - объявления
use - определения функций
- определения типов
- определения структур
- определения перечислений
- определения объединений
- константы
- статические элементы
- определения трейтов
- реализации
- внешние блоки
Элементы могут быть объявлены в корне крейта, в модуле или в блочном выражении.
Подмножество элементов, называемых ассоциированными элементами, может быть объявлено в трейтах и реализациях.
Подмножество элементов, называемых внешними элементами, может быть объявлено во внешних блоках.
Элементы могут быть определены в любом порядке, за исключением macro_rules,
который имеет собственное поведение областей видимости.
Разрешение имён элементов позволяет определять элементы до или после того, как на элемент ссылаются в модуле или блоке.
См. области видимости элементов для получения информации о правилах областей видимости элементов.