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