Приложение A: Ключевые слова
Следующий список содержит ключевые слова, зарезервированные для текущего или будущего использования в языке Rust. Как таковые их нельзя использовать в качестве идентификаторов (за исключением сырых идентификаторов, которые мы обсудим в разделе «Сырые идентификаторы»). Идентификаторы — это имена функций, переменных, параметров, полей структур, модулей, крейтов, констант, макросов, статических значений, атрибутов, типов, свойств или времён жизни.
Используемые в настоящее время ключевые слова
Ниже приведён список используемых в настоящее время ключевых слов с их описанием.
as— выполнить примитивное преобразование, уточнить конкретную характеристику, которую содержит объект, или переименовать элемент в выраженииuseasync— возвратFutureвместо блокировки текущего потокаawait— остановка выполнения до готовности результатаFuturebreak— немедленный выход из циклаconst— определение константного элемента или неизменяемого сырого указателяcontinue— досрочный переход к следующей итерации циклаcrate— ссылка на корень пакета в пути к модулюdyn— динамическая отсылка к типажу объектаelse— альтернативные ветви для конструкций управления потокаifиif letenum— определение перечисленийextern— связывание внешней функции или переменнойfalse— логический ложный литералfn— определение функции или типа указателя на функциюfor— циклически перебирать элементы из итератора, реализовывать признак или указывать время жизни с более высоким рейтингом.if— ветвление на основе результата условного выраженияimpl— реализация встроенной функциональности или функциональности типажаin— часть синтаксиса циклаforlet— объявление (связывание) переменнойloop— безусловный циклmatch— сопоставление значения с шаблонамиmod— определение модуляmove— перекладывание владения на замыкание всеми захваченными элементамиmut— обозначение изменчивости в ссылках, сырах указателей и привязках к шаблонуpub— модификатор публичной доступность полей структур, блоковimplи модулейref— привязка по ссылкеreturn— возвращает результат из функцииSelf— псевдоним для определяемого или реализуемого типаself— объект текущего метода или модуляstatic— глобальная переменная или время жизни, продолжающееся на протяжении всего выполнения программыstruct— определение структурыsuper— родительский модуль текущего модуляtrait— определение типажаtrue— логический истинный литералtype— определение псевдонима типа или связанного типаunion- определить объединение; является ключевым словом только при использовании в объявлении объединенияunsafe— обозначение небезопасного кода, функций, типажей и их реализацийuse— ввод имён в область видимостиwhere— ограничение типаwhile— условный цикл, основанный на результате выражения
Ключевые слова, зарезервированные для будущего использования
Следующие ключевые слова ещё не имеют никакой функциональности, но зарезервированы Rust для возможного использования в будущем.
abstractbecomeboxdofinalmacrooverrideprivtrytypeofunsizedvirtualyield
Сырые идентификаторы
Сырые идентификаторы — это синтаксис, позволяющий использовать ключевые слова там, где обычно они не могут быть. Для создания и использования сырого идентификатора к ключевому слову добавляется префикс 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.