Додаток A: Ключові слова
Наведені нижче списки містять ключові слова, зарезервовані для поточного або майбутнього використання мовою Rust. Як такі, вони не можуть використовуватися як ідентифікатори (за винятком raw identifiers, як ми обговорюємо в розділі «Raw Identifiers»). Ідентифікатори — це назви функцій, змінних, параметрів, полів структур, модулів, крейтів, констант, макросів, static-значень, атрибутів, типів, трейтів або часів життя.
Ключові слова, що зараз використовуються
Нижче наведено список ключових слів, що зараз використовуються, з описом їхньої функціональності.
as: Виконати примітивне приведення, розрізнити конкретний трейт, що містить елемент, або перейменувати елементи вuse-операторах.async: ПовернутиFutureзамість блокування поточного потоку.await: Призупинити виконання, доки результатFutureне буде готовий.break: Негайно вийти з циклу.const: Визначити константні елементи або константні raw pointers.continue: Продовжити до наступної ітерації циклу.crate: У шляху модуля вказує на корінь крейту.dyn: Динамічна диспетчеризація до трейт-об’єкта.else: Альтернатива для конструкцій керування потокомifіif let.enum: Визначити перелік.extern: Прив’язати зовнішню функцію або змінну.false: Булевий літерал false.fn: Визначити функцію або тип вказівника на функцію.for: Проходити по елементах з ітератора, реалізувати трейт або вказати lifetime вищого рангу.if: Розгалуження на основі результату умовного виразу.impl: Реалізувати вбудовану або трейт-функціональність.in: Частина синтаксису циклуfor.let: Прив’язати змінну.loop: Цикл безумовно.match: Зіставити значення зі зразками.mod: Визначити модуль.move: Змусити замикання взяти власність на всі свої захоплення.mut: Позначити змінність у посиланнях, raw pointers або прив’язках зразка.pub: Позначити публічну видимість у полях структури, блокахimplабо модулях.ref: Прив’язати за посиланням.return: Повернутися з функції.Self: Псевдонім типу для типу, який ми визначаємо або реалізуємо.self: Об’єкт методу або поточний модуль.static: Глобальна змінна або час життя, що триває протягом усього виконання програми.struct: Визначити структуру.super: Батьківський модуль поточного модуля.trait: Визначити трейт.true: Булевий літерал true.type: Визначити псевдонім типу або асоційований тип.union: Визначити union; це ключове слово лише тоді, коли використовується в оголошенні union.unsafe: Позначити unsafe код, функції, трейт або реалізації.use: Внести символи в область видимості.where: Позначити clauses, що обмежують тип.while: Цикл умовно на основі результату виразу.
Ключові слова, зарезервовані для майбутнього використання
Наведені нижче ключові слова ще не мають жодної функціональності, але зарезервовані Rust для потенційного майбутнього використання:
abstractbecomeboxdofinalgenmacrooverrideprivtrytypeofunsizedvirtualyield
Raw Identifiers
Raw identifiers — це синтаксис, що дає змогу використовувати ключові слова там, де їх зазвичай не дозволено. Ви використовуєте raw identifier, додаючи перед ключовим словом префікс r#.
Наприклад, match — це ключове слово. Якщо ви спробуєте скомпілювати таку функцію, що використовує match як її ім’я:
Filename: 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 як ім’я функції, вам потрібно використовувати синтаксис raw identifier, ось так:
Filename: src/main.rs
fn r#match(needle: &str, haystack: &str) -> bool {
haystack.contains(needle)
}
fn main() {
assert!(r#match("foo", "foobar"));
}
Цей код скомпілюється без жодних помилок. Зверніть увагу на префікс r# в імені функції в її визначенні, а також там, де функцію викликають у main.
Raw identifiers дають змогу використовувати будь-яке слово, яке ви оберете, як ідентифікатор, навіть якщо це слово випадково є зарезервованим ключовим словом. Це дає нам більше свободи в доборі імен ідентифікаторів, а також дає змогу інтегруватися з програмами, написаними мовою, у якій ці слова не є ключовими словами. Крім того, raw identifiers дають змогу використовувати бібліотеки, написані в іншому виданні Rust, ніж те, яке використовує ваш крейт. Наприклад, try не є ключовим словом у виданні 2015, але є у виданнях 2018, 2021 і 2024. Якщо ви залежите від бібліотеки, написаної з використанням видання 2015 і яка має функцію try, вам потрібно буде використовувати синтаксис raw identifier, r#try у цьому випадку, щоб викликати цю функцію з вашого коду в пізніших виданнях. Дивіться Додаток E для отримання додаткової інформації про видання.