Keyboard shortcuts

Press or to navigate between chapters

Press S or / to search in the book

Press ? to show this help

Press Esc to hide this help

Додаток 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 для потенційного майбутнього використання:

  • abstract
  • become
  • box
  • do
  • final
  • gen
  • macro
  • override
  • priv
  • try
  • typeof
  • unsized
  • virtual
  • yield

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 для отримання додаткової інформації про видання.