Keyboard shortcuts

Press or to navigate between chapters

Press S or / to search in the book

Press ? to show this help

Press Esc to hide this help

Имена

Сущность — это языковая конструкция, на которую можно ссылаться каким-либо образом в исходной программе, обычно через path. Сущности включают типы, элементы, обобщённые параметры, переменные привязки, метки циклов, времена жизни, поля, атрибуты и линты.

Объявление — это синтаксическая конструкция, которая может вводить имя для ссылки на сущность. Имена сущностей действительны в пределах области видимости — области исходного текста, где на это имя можно ссылаться.

Некоторые сущности явно объявлены в исходном коде, а некоторые неявно объявлены как часть языка или расширений компилятора.

Пути используются для ссылки на сущность, возможно, в другом модуле или типе.

Времена жизни и метки циклов используют специальный синтаксис с предшествующей кавычкой.

Имена разделены на различные пространства имён, позволяя сущностям в разных пространствах имён иметь одинаковое имя без конфликта.

Разрешение имён — это процесс во время компиляции, связывающий пути, идентификаторы и метки с объявлениями сущностей.

Доступ к определённым именам может быть ограничен на основе их видимости.

Явно объявленные сущности

Сущности, которые явно вводят имя в исходном коде:

  • Привязки образцов оператора let
  • Атрибут macro_use может вводить имена макросов из другого крейта
  • Атрибут macro_export может вводить псевдоним для макроса в корень крейта

Кроме того, вызовы макросов и атрибуты могут вводить имена путём разворачивания в один из вышеперечисленных элементов.

Неявно объявленные сущности

Следующие сущности неявно определены языком или введены опциями компилятора и расширениями:

Кроме того, корневой модуль крейта не имеет имени, но на него можно ссылаться с помощью определённых квалификаторов путей или псевдонимов.