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