Додаток A: ключові слова
Цей список містить ключові слова, зарезервовані для поточного або майбутнього використання в мові Rust. Відтак, вони не можуть використовуватися як ідентифікатори (крім сирих ідентифікаторів, як обговорюється в розділі "Сирі ідентифікатори). Ідентифікатори - це імена функцій, змінних, параметрів, полів структур, модулів, крейтів, констант, макросів, статичних значень, атрибутів, типів, трейтів і часів існування.
Ключові слова, що використовуються
Далі наведено список ключових слів, що використовують зараз, з описом їхнього призначення.
as
- виконати примітивне перетворення, прибрати неоднозначність трейта, що містить елемент, чи перейменувати елементи інструкціїuse
async
- повернутиFuture
замість блокувати поточний потікawait
- припинити виконання, доки результатFuture
не буде готовимbreak
- негайно вийти з циклуconst
- визначити константу чи константний вказівникcontinue
- продовжити цикл з наступної ітераціїcrate
- у шляху модуля посилається на корінь крейтаdyn
- динамічна диспетчеризація трейтового об'єктаelse
- альтернативний рукав для конструкцій керуванняif
таif let
enum
- визначення енумаextern
- зв'язати зовнішню функцію або зміннуfalse
- булевий літерал "хиба"fn
- визначити функцію чи тип вказівника на функціюfor
- цикл по елементах ітератора, реалізувати трейт, чи зазначити більш значущий час існуванняif
- виконати код залежно від умовного виразуimpl
- реалізувати притаманну функціональність чи трейтin
- частина синтаксису циклуfor
let
- зв'язати зміннуloop
- безумовний циклmatch
- зіставити значення з шаблонамиmod
- визначити модульmove
- передати замиканню володіння усіма захопленими значеннямиmut
- позначити мутабельність у посиланнях, вказівниках чи шаблонних зв'язуванняхpub
- позначити публічну видимість у полях структур, блокахimpl
та модуляхref
- зв'язати за посиланнямreturn
- повернення з функціїSelf
- псевдонім типу для типу, який ми визначаємо чи реалізуємоself
- суб'єкт методу чи поточний модульstatic
- глобальна змінна чи час існування, що триває весь час виконання програмиstruct
- визначити структуруsuper
- батьківський модуль відносно поточногоtrait
- визначити трейтtrue
- булевий літерал "правда"type
- визначити псевдонім типу чи асоційований тип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. Див. Додаток E щоб отримати більше інформації про редакції.