Приложение A: Ключевые слова
Следующий список содержит ключевые слова, зарезервированные для текущего или будущего использования в языке Rust. Как таковые их нельзя использовать в качестве идентификаторов (за исключением сырых идентификаторов, которые мы обсудим в разделе «Сырые идентификаторы»). Идентификаторы — это имена функций, переменных, параметров, полей структур, модулей, крейтов, констант, макросов, статических значений, атрибутов, типов, свойств или времён жизни.
Используемые в настоящее время ключевые слова
Ниже приведён список используемых в настоящее время ключевых слов с их описанием.
as
— выполнить примитивное преобразование, уточнить конкретную характеристику, которую содержит объект, или переименовать элемент в выраженииuse
async
— возвратFuture
вместо блокировки текущего потокаawait
— остановка выполнения до готовности результатаFuture
break
— немедленный выход из циклаconst
— определение константного элемента или неизменяемого сырого указателяcontinue
— досрочный переход к следующей итерации циклаcrate
— ссылка на корень пакета в пути к модулюdyn
— динамическая отсылка к типажу объектаelse
— альтернативные ветви для конструкций управления потокаif
иif let
enum
— определение перечисленийextern
— связывание внешней функции или переменнойfalse
— логический ложный литералfn
— определение функции или типа указателя на функциюfor
— циклически перебирать элементы из итератора, реализовывать признак или указывать время жизни с более высоким рейтингом.if
— ветвление на основе результата условного выраженияimpl
— реализация встроенной функциональности или функциональности типажаin
— часть синтаксиса циклаfor
let
— объявление (связывание) переменнойloop
— безусловный циклmatch
— сопоставление значения с шаблонамиmod
— определение модуляmove
— перекладывание владения на замыкание всеми захваченными элементамиmut
— обозначение изменчивости в ссылках, сырах указателей и привязках к шаблонуpub
— модификатор публичной доступность полей структур, блоковimpl
и модулейref
— привязка по ссылкеreturn
— возвращает результат из функцииSelf
— псевдоним для определяемого или реализуемого типаself
— объект текущего метода или модуляstatic
— глобальная переменная или время жизни, продолжающееся на протяжении всего выполнения программыstruct
— определение структурыsuper
— родительский модуль текущего модуляtrait
— определение типажаtrue
— логический истинный литералtype
— определение псевдонима типа или связанного типаunion
- определить объединение; является ключевым словом только при использовании в объявлении объединенияunsafe
— обозначение небезопасного кода, функций, типажей и их реализацийuse
— ввод имён в область видимостиwhere
— ограничение типаwhile
— условный цикл, основанный на результате выражения
Ключевые слова, зарезервированные для будущего использования
Следующие ключевые слова ещё не имеют никакой функциональности, но зарезервированы Rust для возможного использования в будущем.
abstract
become
box
do
final
macro
override
priv
try
typeof
unsized
virtual
yield
Сырые идентификаторы
Сырые идентификаторы — это синтаксис, позволяющий использовать ключевые слова там, где обычно они не могут быть. Для создания и использования сырого идентификатора к ключевому слову добавляется префикс r#
.
Например, ключевое слово match
. Если вы попытаетесь скомпилировать следующую функцию, использующую в качестве имени match
:
Файл: src/main.rs
fn match(needle: &str, haystack: &str) -> bool {
haystack.contains(needle)
}
вы получите ошибку:
error: expected identifier, found keyword `match`
--> src/main.rs:4:4
|
4 | fn match(needle: &str, haystack: &str) -> bool {
| ^^^^^ expected identifier, found keyword
Ошибка говорит о том, что вы не можете использовать ключевое слово match
в качестве идентификатора функции. Чтобы получить возможность использования слова match
в качестве имени функции, нужно использовать синтаксис «сырых идентификаторов», например так:
Файл: src/main.rs
fn r#match(needle: &str, haystack: &str) -> bool { haystack.contains(needle) } fn main() { assert!(r#match("foo", "foobar")); }
Этот код скомпилируется без ошибок. Обратите внимание, что префикс r#
в определении имени функции указан так же, как он указан в месте её вызова в main
.
Сырые идентификаторы позволяют вам использовать любое слово, которое вы выберете, в качестве идентификатора, даже если это слово окажется зарезервированным ключевым словом. Это даёт нам больше свободы в выборе имён идентификаторов, а также позволяет нам интегрироваться с программами, написанными на языке, где эти слова не являются ключевыми. Кроме того, необработанные идентификаторы позволяют вам использовать библиотеки, написанные в версии Rust, отличной от используемой в вашем крейте. Например, try
не является ключевым словом в выпуске 2015 года, но является в выпуске 2018 года. Если вы зависите от библиотеки, написанной с использованием версии 2015 года и имеющей функцию try
, вам потребуется использовать синтаксис сырого идентификатора, в данном случае r#try
, для вызова этой функции из кода версии 2018 года. См. Приложение E для получения дополнительной информации о редакциях Rust.