Keyboard shortcuts

Press or to navigate between chapters

Press S or / to search in the book

Press ? to show this help

Press Esc to hide this help

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

OperatorPrzykładWyjaśnieniePrzeciążalny?
!ident!(...), ident!{...}, ident![...]Rozwinięcie makra
!!exprBitowa lub logiczna negacjaNot
!=expr != exprPorównanie nierównościPartialEq
%expr % exprReszta z dzielenia arytmetycznegoRem
%=var %= exprReszta z dzielenia arytmetycznego i przypisanieRemAssign
&&expr, &mut exprPożyczenie
&&type, &mut type, &'a type, &'a mut typeTyp wskaźnika pożyczonego
&expr & exprBitowe ANDBitAnd
&=var &= exprBitowe AND i przypisanieBitAndAssign
&&expr && exprKrótkookresowe logiczne AND
*expr * exprMnożenie arytmetyczneMul
*=var *= exprMnożenie arytmetyczne i przypisanieMulAssign
**exprDereferencjaDeref
**const type, *mut typeSurowy wskaźnik
+trait + trait, 'a + traitOgraniczenie typu złożonego
+expr + exprDodawanie arytmetyczneAdd
+=var += exprDodawanie arytmetyczne i przypisanieAddAssign
,expr, exprSeparator argumentów i elementów
-- exprNegacja arytmetycznaNeg
-expr - exprOdejmowanie arytmetyczneSub
-=var -= exprOdejmowanie arytmetyczne i przypisanieSubAssign
->fn(...) -> type, |…| -> typeTyp zwracany funkcji i zamknięcia
.expr.identDostęp do pola
.expr.ident(expr, ...)Wywołanie metody
.expr.0, expr.1, i tak dalejIndeksowanie krotek
...., expr.., ..expr, expr..exprLiterał zakresu wyłączającego prawą stronęPartialOrd
..=..=expr, expr..=exprLiterał zakresu włączającego prawą stronęPartialOrd
....exprSkł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 / exprDzielenie arytmetyczneDiv
/=var /= exprDzielenie arytmetyczne i przypisanieDivAssign
:pat: type, ident: typeOgraniczenia
:ident: exprInicjalizator pola struktury
:'a: loop {...}Etykieta pętli
;expr;Terminator instrukcji i elementu
;[...; len]Część składni tablicy o stałym rozmiarze
<<expr << exprPrzesunięcie w lewoShl
<<=var <<= exprPrzesunięcie w lewo i przypisanieShlAssign
<expr < exprPorównanie „mniejsze niż”PartialOrd
<=expr <= exprPorównanie „mniejsze niż lub równe”PartialOrd
=var = expr, ident = typePrzypisanie/równoważność
==expr == exprPorównanie równościPartialEq
=>pat => exprCzęść składni ramienia dopasowania
>expr > exprPorównanie „większe niż”PartialOrd
>=expr >= exprPorównanie „większe niż lub równe”PartialOrd
>>expr >> exprPrzesunięcie w prawoShr
>>=var >>= exprPrzesunięcie w prawo i przypisanieShrAssign
@ident @ patWiązanie wzorca
^expr ^ exprBitowe OR wyłączneBitXor
^=var ^= exprBitowe OR wyłączne i przypisanieBitXorAssign
|pat | patAlternatywy wzorców
|expr | exprBitowe ORBitOr
|=var |= exprBitowe OR i przypisanieBitOrAssign
||expr || exprKró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

SymbolWyjaśnienie
'identNazwane ż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
|…| exprZamknię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

SymbolWyjaś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>::identStowarzyszone 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

SymbolWyjaś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<...> typeOgraniczenia 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

SymbolWyjaśnienie
T: UParametr generyczny T ograniczony do typów, które implementują U
T: 'aTyp 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: 'staticTyp generyczny T nie zawiera żadnych pożyczonych referencji innych niż te 'static
'b: 'aGeneryczny czas życia 'b musi przetrwać czas życia 'a
T: ?SizedZezwala parametrowi typu generycznego na bycie typem o dynamicznym rozmiarze
'a + trait, trait + traitOgraniczenie 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

SymbolWyjaśnienie
#[meta]Atrybut zewnętrzny
#![meta]Atrybut wewnętrzny
$identPodstawienie makra
$ident:kindMetazmienna makra
$(...)...Powtórzenie makra
ident!(...), ident!{...}, ident![...]Wywołanie makra

Tabela B-7 przedstawia symbole tworzące komentarze.

Tabela B-7: Komentarze

SymbolWyjaś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

SymbolWyjaś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

KontekstWyjaś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

KontekstWyjaś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”