Додаток B: Оператори та Символи
Цей додаток містить словник синтаксису Rust, включно з операторами та іншими символами, що вживаються самостійно або в контексті шляхів, узагальнених типів, обмежень трейтів, макросів, атрибутів, коментарів, кортежів і дужок.
Оператори
Таблиця B-1 містить оператори Rust, приклади, як ці оператори вживаються, коротке пояснення, і чи можна перевантажити оператор. Якщо оператор можна перевантажити, то вказується відповідний трейт, який треба використати для перевантаження.
Оператор | Приклад | Пояснення | Перевантаження? |
---|---|---|---|
! | ident!(...) , ident!{...} , ident![...] | Макрос | |
! | !expr | Побітове чи логічне доповнення | Not |
!= | expr != expr | Порівняння на нерівність | PartialEq |
% | expr % expr | Арифметична остача | Rem |
%= | var %= expr | Арифметична остача з присвоєнням | RemAssign |
& | &expr , &mut expr | Позичання | |
& | &type , &mut type , &'a type , &'a mut type | Тип позиченого вказівника | |
& | expr & expr | Побітове AND | BitAnd |
&= | var &= expr | Побітове AND з присвоєнням | BitAndAssign |
&& | expr && expr | Логічне AND зі скороченим обчисленням | |
* | expr * expr | Арифметичне множення | Mul |
*= | var *= expr | Арифметичне множення з присвоєнням | MulAssign |
* | *expr | Розіменування | Deref |
* | *const type , *mut type | Сирий вказівник | |
+ | trait + trait , 'a + trait | Комбіноване обмеження типу | |
+ | expr + expr | Арифметичне додавання | Add |
+= | var += expr | Арифметичне додавання з присвоєння | AddAssign |
, | expr, expr | Роздільник аргументів чи елементів | |
- | - expr | Обчислення арифметичного протилежного | Neg |
- | expr - expr | Арифметичне віднімання | Sub |
-= | var -= expr | Арифметичне віднімання з присвоєнням | SubAssign |
-> | fn(...) -> type , |...| -> type | Тип, що повертає функція чи замикання | |
. | expr.ident | Доступ до складової | |
.. | .. , expr.. , ..expr , expr..expr | Діапазонний літерал, не включає праву межу | PartialOrd |
..= | ..=expr , expr..=expr | Діапазонний літерал, включає праву межу | PartialOrd |
.. | ..expr | Оновлення структурного літералу | |
.. | variant(x, ..) , struct_type { x, .. } | Шаблон зв'язування "і решта" | |
... | expr...expr | (Застарілий, використовуйте натомість ..= ) У шаблоні: діапазонний шаблон, включає межу | |
/ | expr / expr | Арифметичне ділення | Div |
/= | var /= expr | Арифметичне ділення з присвоєнням | DivAssign |
: | pat: type , ident: type | Обмеження | |
: | ident: expr | Ініціалізатор поля структури | |
: | 'a: loop {...} | Мітка циклу | |
; | expr; | Завершення структури чи елементу | |
; | [...; len] | Частина синтаксису масиву фіксованого розміру | |
<< | expr << expr | Зсув ліворуч | Shl |
<<= | var <<= expr | Зсув ліворуч із присвоєнням | ShlAssign |
< | expr < expr | Порівняння менше | PartialOrd |
<= | expr <= expr | Порівняння менше або дорівнює | PartialOrd |
= | var = expr , ident = type | Присвоєння/еквівалентність | |
== | expr == expr | Порівняння рівності | PartialEq |
=> | pat => expr | Частина синтаксису рукава match | |
> | expr > expr | Порівняння більше | PartialOrd |
>= | expr >= expr | Порівняння більше або дорівнює | PartialOrd |
>> | expr >> expr | Зсув праворуч | Shr |
>>= | var >>= expr | Зсув праворуч із присвоєнням | ShrAssign |
@ | ident @ pat | Зв'язування шаблона | |
^ | expr ^ expr | Побітове виключне OR | BitXor |
^= | var ^= expr | Побітове виключне OR з присвоєнням | BitXorAssign |
| | pat | pat | Альтернативні шаблони | |
| | expr | expr | Побітове OR | BitOr |
|= | var |= expr | Побітове OR із присвоєнням | BitOrAssign |
|| | expr || expr | Логічне OR зі скороченим обчисленням | |
? | expr? | Передавання помилки |
Неоператорні Символи
Наступний список містить усі символи, що не працюють як оператори; тобто, вони не поводяться як виклик функції чи методу.
Таблиця B-2 містить символи, що вживаються самостійно і є коректними у різних місцях.
Символ | Пояснення |
---|---|
'ident | Іменований час існування чи мітка циклу |
...u8 , ...i32 , ...f64 , ...usize і т.д. | Числовий літерал певного типу |
"..." | Стрічковий літерал |
r"..." , r#"..."# , r##"..."## і т.д. | Сирий стрічковий літерал, символи екранування не обробляються |
b"..." | Байтовий стрічковий літерал; створює масив байтів замість стрічки |
br"..." , br#"..."# , br##"..."## і т.д. | Сирий байтовий стрічковий літерал, комбінація сирого і байтового стрічкових літералів |
'...' | Символьний літерал |
b'...' | Байтовий літерал ASCII |
|...| expr | Замикання |
! | Завжди порожній нижній тип для функцій, що не завершуються |
_ | “Ігнороване” зв'язування шаблону; також використовується для покращення читабельності цілочисельних літералів |
Таблиця B-3 містить символи, що зустрічаються в контексті шляхів до елементу в ієрархії модулів.
Символ | Пояснення |
---|---|
ident::ident | Шлях до простору імен |
::path | Шлях відносно кореня крейта (тобто явно заданий абсолютний шлях) |
self::path | Шлях відносно поточного модуля (тобто явно заданий відносний шлях). |
super::path | Шлях відносно батьківського модуля |
type::ident , <type as trait>::ident | Асоційовані константи, функції та типи |
<type>::... | Асоційований елемент для типу, що не можна прямо назвати (наприклад <&T>::... , <[T]>::... і т.д..) |
trait::method(...) | Уточнення неоднозначного виклику методу називанням трейту, що визначає його |
type::method(...) | Уточнення неоднозначного виклику методу називанням типу, для якого він визначений |
<type as trait>::method(...) | Уточнення неоднозначного виклику методу називанням трейту і типу |
Таблиця B-4 містить символи, що зустрічаються в контексті параметрів узагальнених типів.
Символ | Пояснення |
---|---|
path<...> | Вказує параметри до узагальненого типу в типі (наприклад Vec<u8> ) |
path::<...> , method::<...> | Вказує параметри до узагальненого типу, функції чи методу у виразі; часто зветься "турборибою" (наприклад, "42".parse::<i32>() ) |
fn ident<...> ... | Визначення узагальненої функції |
struct ident<...> ... | Визначення узагальненої структури |
enum ident<...> ... | Визначення узагальненого енуму |
impl<...> ... | Визначення узагальненої реалізації |
for<...> type | Обмеження часу існування вищого рівня |
type<ident=type> | Узагальнений тип, де один чи більше асоційованих типів мають конкретні значення (наприклад, Iterator<Item=T> ) |
Таблиця B-5 містить символи, що зустрічаються в контексті обмеження параметрів узагальненого типу обмеженнями трейта.
Символ | Пояснення |
---|---|
T: U | Узагальнений параметр T обмежений типами, що реалізують U |
Т: 'a | Узагальнений тип T має пережити час існування 'a (тобто тип не може транзитивно містити посилання з часом існування меншим ніж 'a ) |
T: 'static | Узагальнений тип T не містить позичених посилань, окрім 'static |
'b: 'a | Узагальнений час існування 'b має перевищувати час існування 'a |
T: ?Sized | Узагальнений тип T має бути типом з динамічним розміром |
'a + trait , trait + trait | Комбіноване обмеження типу |
Таблиця B-6 містить символи, що зустрічаються в контексті виклику чи визначення макросів і зазначення атрибутів елементу.
Символ | Пояснення |
---|---|
#[meta] | Зовнішній атрибут |
#![meta] | Внутрішній атрибут |
$ident | Підставлення в макросі |
$ident:kind | Захоплення в макросі |
$(…)… | Повторення в макросі |
ident!(...) , ident!{...} , ident![...] | Виклик макросу |
Таблиця B-7 містить символи для створення коментарів.
Символ | Пояснення |
---|---|
// | Коментар-рядок |
//! | Внутрішній документаційний коментар-рядок |
/// | Зовнішній документаційний коментар-рядок |
/*...*/ | Коментар-блок |
/*!...*/ | Внутрішній документаційний коментар-блок |
/**...*/ | Зовнішній документаційний коментар-блок |
Таблиця B-8 містить символи, що зустрічаються в контексті використання кортежів.
Символ | Пояснення |
---|---|
() | Порожній кортеж (також відомий як одиничний тип), як літерал, так і тип |
(expr) | Вираз у дужках |
(expr,) | Вираз - кортеж з одного елементу |
(type,) | Тип - кортеж з одного елементу |
(expr, ...) | Вираз - кортеж з декількома елементами |
(type, ...) | Тип - кортеж з декількома елементами |
expr(expr, ...) | Виклик функції; також використовується для ініціалізації кортежів-структур і кортежів-варіантів енумів |
expr.0 , expr.1 , і т.д. | Індексація кортежу |
Таблиця B-9 містить контексти, в яких застосовуються фігурні дужки.
Контекст | Пояснення |
---|---|
{...} | Вираз-блок |
Type {...} | Літерал структури |
Таблиця B-10 містить контексти, в яких застосовуються квадратні дужки.
Контекст | Пояснення |
---|---|
[...] | Літерал масиву |
[expr; len] | Літерал масиву, що містить len копій expr |
[type; len] | Тип масиву, що містить len екземплярів типу type |
expr[expr] | Індексація колекції. Може бути перевантаженою (Index , IndexMut ) |
expr[..] , expr[a..] , expr[..b] , expr[a..b] | Індексація колекції, що має виробляти слайс за допомогою Range , RangeFrom , RangeTo , or RangeFull як індексу |