Dodatek B: Operatory i symbole
Ten dodatek zawiera słownik składni Rust, w tym operatory i inne symbole, które pojawiają się samodzielnie lub w kontekście ścieżek, typów generycznych, ograniczeń cech, makr, atrybutów, komentarzy, krotek i nawiasów.
Operatory
Tabela B-1 zawiera operatory w Rust, przykład, jak operator pojawiłby się w kontekście, krótkie wyjaśnienie i informację, czy operator jest przeciążalny. Jeśli operator jest przeciążalny, wymieniona jest odpowiednia cecha do użycia w celu przeciążenia tego operatora.
Tabela B-1: Operatory
| Operator | Przykład | Wyjaśnienie | Przeciążalny? |
|---|---|---|---|
! | ident!(...), ident!{...}, ident![...] | Rozwinięcie makra | |
! | !expr | Bitowa lub logiczna negacja | Not |
!= | expr != expr | Porównanie nierówności | PartialEq |
% | expr % expr | Reszta z dzielenia arytmetycznego | Rem |
%= | var %= expr | Reszta z dzielenia arytmetycznego i przypisanie | RemAssign |
& | &expr, &mut expr | Pożyczenie | |
& | &type, &mut type, &'a type, &'a mut type | Typ wskaźnika pożyczonego | |
& | expr & expr | Bitowe AND | BitAnd |
&= | var &= expr | Bitowe AND i przypisanie | BitAndAssign |
&& | expr && expr | Krótkookresowe logiczne AND | |
* | expr * expr | Mnożenie arytmetyczne | Mul |
*= | var *= expr | Mnożenie arytmetyczne i przypisanie | MulAssign |
* | *expr | Dereferencja | Deref |
* | *const type, *mut type | Surowy wskaźnik | |
+ | trait + trait, 'a + trait | Ograniczenie typu złożonego | |
+ | expr + expr | Dodawanie arytmetyczne | Add |
+= | var += expr | Dodawanie arytmetyczne i przypisanie | AddAssign |
, | expr, expr | Separator argumentów i elementów | |
- | - expr | Negacja arytmetyczna | Neg |
- | expr - expr | Odejmowanie arytmetyczne | Sub |
-= | var -= expr | Odejmowanie arytmetyczne i przypisanie | SubAssign |
-> | fn(...) -> type, |…| -> type | Typ zwracany funkcji i zamknięcia | |
. | expr.ident | Dostęp do pola | |
. | expr.ident(expr, ...) | Wywołanie metody | |
. | expr.0, expr.1, i tak dalej | Indeksowanie krotek | |
.. | .., expr.., ..expr, expr..expr | Literał zakresu wyłączającego prawą stronę | PartialOrd |
..= | ..=expr, expr..=expr | Literał zakresu włączającego prawą stronę | PartialOrd |
.. | ..expr | Składnia aktualizacji literału struktury | |
.. | variant(x, ..), struct_type { x, .. } | Wiązanie wzorca „i reszta” | |
... | expr...expr | (Przestarzałe, użyj ..= zamiast) We wzorcu: wzorzec zakresu włączającego | |
/ | expr / expr | Dzielenie arytmetyczne | Div |
/= | var /= expr | Dzielenie arytmetyczne i przypisanie | DivAssign |
: | pat: type, ident: type | Ograniczenia | |
: | ident: expr | Inicjalizator pola struktury | |
: | 'a: loop {...} | Etykieta pętli | |
; | expr; | Terminator instrukcji i elementu | |
; | [...; len] | Część składni tablicy o stałym rozmiarze | |
<< | expr << expr | Przesunięcie w lewo | Shl |
<<= | var <<= expr | Przesunięcie w lewo i przypisanie | ShlAssign |
< | expr < expr | Porównanie „mniejsze niż” | PartialOrd |
<= | expr <= expr | Porównanie „mniejsze niż lub równe” | PartialOrd |
= | var = expr, ident = type | Przypisanie/równoważność | |
== | expr == expr | Porównanie równości | PartialEq |
=> | pat => expr | Część składni ramienia dopasowania | |
> | expr > expr | Porównanie „większe niż” | PartialOrd |
>= | expr >= expr | Porównanie „większe niż lub równe” | PartialOrd |
>> | expr >> expr | Przesunięcie w prawo | Shr |
>>= | var >>= expr | Przesunięcie w prawo i przypisanie | ShrAssign |
@ | ident @ pat | Wiązanie wzorca | |
^ | expr ^ expr | Bitowe OR wyłączne | BitXor |
^= | var ^= expr | Bitowe OR wyłączne i przypisanie | BitXorAssign |
| | pat | pat | Alternatywy wzorców | |
| | expr | expr | Bitowe OR | BitOr |
|= | var |= expr | Bitowe OR i przypisanie | BitOrAssign |
|| | expr || expr | Krótkookresowe logiczne OR | |
? | expr? | Propagacja błędu |
Symbole niebędące operatorami
Poniższe tabele zawierają wszystkie symbole, które nie pełnią funkcji operatorów; to znaczy, nie zachowują się jak wywołanie funkcji lub metody.
Tabela B-2 przedstawia symbole, które występują samodzielnie i są ważne w różnych miejscach.
Tabela B-2: Składnia samodzielna
| Symbol | Wyjaśnienie |
|---|---|
'ident | Nazwane życie lub etykieta pętli |
Cyfry natychmiastowo poprzedzone u8, i32, f64, usize itd. | Literał numeryczny określonego typu |
"..." | Literał ciągu znaków |
r"...", r#"..."#, r##"..."## itd. | Surowy literał ciągu znaków; znaki ucieczki nie są przetwarzane |
b"..." | Literał ciągu bajtów; konstruuje tablicę bajtów zamiast ciągu znaków |
br"...", br#"..."#, br##"..."## itd. | Surowy literał ciągu bajtów; połączenie surowego i bajtowego literału |
'...' | Literał znaku |
b'...' | Literał bajtu ASCII |
|…| expr | Zamknięcie (closure) |
! | Zawsze pusty typ dolny dla funkcji rozbieżnych |
_ | Wiązanie wzorca „ignorowane”; używane również do czytelności literałów całkowitych |
Tabela B-3 przedstawia symbole, które pojawiają się w kontekście ścieżki przez hierarchię modułów do elementu.
Tabela B-3: Składnia związana ze ścieżkami
| Symbol | Wyjaśnienie |
|---|---|
ident::ident | Ścieżka przestrzeni nazw |
::path | Ścieżka względna do katalogu głównego skrzynki (tj. jawnie ścieżka bezwzględna) |
self::path | Ścieżka względna do bieżącego modułu (tj. jawnie ścieżka względna) |
super::path | Ścieżka względna do nadrzędnego modułu bieżącego modułu |
type::ident, <type as trait>::ident | Stowarzyszone stałe, funkcje i typy |
<type>::... | Stowarzyszony element dla typu, którego nie można bezpośrednio nazwać (na przykład <&T>::..., <[T]>::... itd.) |
trait::method(...) | Rozróżnianie wywołania metody przez nazwanie cechy, która ją definiuje |
type::method(...) | Rozróżnianie wywołania metody przez nazwanie typu, dla którego jest zdefiniowana |
<type as trait>::method(...) | Rozróżnianie wywołania metody przez nazwanie cechy i typu |
Tabela B-4 przedstawia symbole, które pojawiają się w kontekście używania generycznych parametrów typu.
Tabela B-4: Typy generyczne
| Symbol | Wyjaśnienie |
|---|---|
path<...> | Określa parametry dla typu generycznego w typie (np. Vec<u8>) |
path::<...>, method::<...> | Określa parametry dla typu, funkcji lub metody generycznej w wyrażeniu; często określane jako turbofish (np. "42".parse::<i32>()) |
fn ident<...> ... | Definiuje funkcję generyczną |
struct ident<...> ... | Definiuje strukturę generyczną |
enum ident<...> ... | Definiuje wyliczenie generyczne |
impl<...> ... | Definiuje implementację generyczną |
for<...> type | Ograniczenia czasu życia wyższego rzędu |
type<ident=type> | Typ generyczny, w którym jeden lub więcej stowarzyszonych typów ma określone przypisania (np. Iterator<Item=T>) |
Tabela B-5 przedstawia symbole, które pojawiają się w kontekście ograniczania generycznych parametrów typu za pomocą ograniczeń cech.
Tabela B-5: Ograniczenia cech
| Symbol | Wyjaśnienie |
|---|---|
T: U | Parametr generyczny T ograniczony do typów, które implementują U |
T: 'a | Typ generyczny T musi przetrwać czas życia 'a (co oznacza, że typ nie może przejściowo zawierać żadnych referencji o krótszych czasach życia niż 'a) |
T: 'static | Typ generyczny T nie zawiera żadnych pożyczonych referencji innych niż te 'static |
'b: 'a | Generyczny czas życia 'b musi przetrwać czas życia 'a |
T: ?Sized | Zezwala parametrowi typu generycznego na bycie typem o dynamicznym rozmiarze |
'a + trait, trait + trait | Ograniczenie typu złożonego |
Tabela B-6 przedstawia symbole, które pojawiają się w kontekście wywoływania lub definiowania makr oraz określania atrybutów dla elementu.
Tabela B-6: Makra i atrybuty
| Symbol | Wyjaśnienie |
|---|---|
#[meta] | Atrybut zewnętrzny |
#![meta] | Atrybut wewnętrzny |
$ident | Podstawienie makra |
$ident:kind | Metazmienna makra |
$(...)... | Powtórzenie makra |
ident!(...), ident!{...}, ident![...] | Wywołanie makra |
Tabela B-7 przedstawia symbole tworzące komentarze.
Tabela B-7: Komentarze
| Symbol | Wyjaśnienie |
|---|---|
// | Komentarz liniowy |
//! | Wewnętrzny komentarz doc. liniowy |
/// | Zewnętrzny komentarz doc. liniowy |
/*...*/ | Komentarz blokowy |
/*!...*/ | Wewnętrzny komentarz doc. blokowy |
/**...*/ | Zewnętrzny komentarz doc. blokowy |
Tabela B-8 przedstawia konteksty, w których używane są nawiasy.
Tabela B-8: Nawiasy
| Symbol | Wyjaśnienie |
|---|---|
() | Pusta krotka (aka jednostka), zarówno literał, jak i typ |
(expr) | Wyrażenie w nawiasach |
(expr,) | Wyrażenie krotki z jednym elementem |
(type,) | Typ krotki z jednym elementem |
(expr, ...) | Wyrażenie krotki |
(type, ...) | Typ krotki |
expr(expr, ...) | Wyrażenie wywołania funkcji; używane również do inicjalizacji struktur krotek i wariantów enum krotek |
Tabela B-9 przedstawia konteksty, w których używane są nawiasy klamrowe.
Tabela B-9: Nawiasy klamrowe
| Kontekst | Wyjaśnienie |
|---|---|
{...} | Wyrażenie bloku |
Type {...} | Literał struktury |
Tabela B-10 przedstawia konteksty, w których używane są nawiasy kwadratowe.
Tabela B-10: Nawiasy kwadratowe
| Kontekst | Wyjaśnienie |
|---|---|
[...] | Literał tablicy |
[expr; len] | Literał tablicy zawierający len kopii expr |
[type; len] | Typ tablicy zawierający len instancji type |
expr[expr] | Indeksowanie kolekcji; przeciążalne (Index, IndexMut) |
expr[..], expr[a..], expr[..b], expr[a..b] | Indeksowanie kolekcji udające wycinanie kolekcji, używające Range, RangeFrom, RangeTo lub RangeFull jako „indeksu” |