Приложение 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— обозначает видимостьpublicв полях структур, блокахimplили модуляхref— связывание по ссылкеreturn— возврат из функцииSelf— псевдоним типа для определяемого или реализуемого типаself— субъект метода или текущий модульstatic— глобальная переменная или время жизни, длящееся всё время выполнения программыstruct— определение структурыsuper— родительский модуль текущего модуляtrait— определение типажаtrue— булева константа истинаtype— определение псевдонима типа или ассоциированного типаunion— определение объединения; является ключевым словом только при использовании в объявлении объединенияunsafe— обозначает небезопасный код, функции, типажи или реализацииuse— вводит символы в область видимости; задаёт точные захваты для обобщений и ограничений времени жизниwhere— обозначает предложения, ограничивающие типwhile— условный цикл на основе результата выражения
Ключевые слова, зарезервированные для будущего использования
Следующие ключевые слова пока не имеют никакой функциональности, но зарезервированы Rust для потенциального использования в будущем.
abstractbecomeboxdofinalgenmacrooverrideprivtrytypeofunsizedvirtualyield
Сырые идентификаторы
Сырые идентификаторы — это синтаксис, позволяющий использовать ключевые слова там, где они обычно не разрешены. Вы используете сырой идентификатор, добавляя префикс 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, 2021 и 2024. Если вы зависите от библиотеки, написанной с использованием редакции 2015 и имеющей функцию try, вам нужно будет использовать синтаксис сырого идентификатора, r#try в данном случае, чтобы вызвать эту функцию из вашего кода в более поздних редакциях. См. Приложение E для получения дополнительной информации о редакциях.