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