Anexa B: Operatori si simboluri

Această anexă conține un glosar al sintaxei Rust, inclusiv operatori și alte simboluri care apar singure sau în contextul căilor, genericelor, limitelor de trăsături, macrocomenzilor, atributelor, comentariilor, tuplelor și parantezelor.

Operatori

Tabelul B-1 conține operatorii din Rust, un exemplu de cum ar apărea operatorul în context, o scurtă explicație și dacă acel operator este supraîncarcabil. Dacă un operator este supraîncarcabil, trăsătura relevantă de utilizat pentru a supraîncarca acel operator este listată.

Tabelul B-1: Operatori

OperatorExempluExplicațieSupraîncarcabil?
!ident!(...), ident!{...}, ident![...]Expansiune de macrocomandă
!!exprComplement logic sau pe bițiNot
!=expr != exprComparare de non-egalitatePartialEq
%expr % exprRest aritmeticRem
%=var %= exprRest aritmetic și atribuireRemAssign
&&expr, &mut exprReferință
&&type, &mut type, &'a type, &'a mut typeTip pointer împrumutat
&expr & exprAND pe bițiBitAnd
&=var &= exprAND pe biți și atribuireBitAndAssign
&&expr && exprAND logic scurtcircuitat (care abandonează evaluarea la prima expresie evaluată ca fals)
*expr * exprÎnmulțire aritmeticăMul
*=var *= exprÎnmulțire aritmetică și atribuireMulAssign
**exprDereferențiereDeref
**const type, *mut typePointer brut
+trait + trait, 'a + traitConstrângere de tip compus
+expr + exprAdunare aritmeticăAdd
+=var += exprAdunare aritmetică și atribuireAddAssign
,expr, exprSeparator de argumente și elemente
-- exprNegare aritmeticăNeg
-expr - exprScădere aritmeticăSub
-=var -= exprScădere aritmetică și atribuireSubAssign
->fn(...) -> type, |...| -> typeTipul de returnare pentru funcție și închidere
.expr.identAcces la membru
...., expr.., ..expr, expr..exprLiteral pentru rang exclus la dreaptaPartialOrd
..=..=expr, expr..=exprLiteral pentru rang inclusiv la dreaptaPartialOrd
....exprSintaxă pentru actualizare literală structură
..variant(x, ..), struct_type { x, .. }Legare de pattern „Și restul”
...expr...expr(Depreciat, în schimb folosiți ..=) Într-un pattern: pattern pentru diapazon inclusiv
/expr / exprDiviziune aritmeticăDiv
/=var /= exprDiviziune aritmetică și atribuireDivAssign
:pat: type, ident: typeConstrângeri
:ident: exprInițializator de câmp de structură
:'a: loop {...}Etichetă de buclă
;expr;Terminare de instrucțiune și element
;[...; len]Parte din sintaxă de array cu dimensiune fixă
<<expr << exprDeplasare la stângaShl
<<=var <<= exprDeplasare la stânga și atribuireShlAssign
<expr < exprComparare mai mică decâtPartialOrd
<=expr <= exprComparare mai mic sau egalPartialOrd
=var = expr, ident = typeAtribuire/echivalență
==expr == exprComparare de egalitatePartialEq
=>pat => exprParte din sintaxa pentru ramura match
>expr > exprComparare mai mare decâtPartialOrd
>=expr >= exprComparare mai mare sau egalPartialOrd
>>expr >> exprDeplasare la dreaptaShr
>>=var >>= exprDeplasare la dreapta și atribuireShrAssign
@ident @ patLegare de pattern
^expr ^ exprOR exclusiv pe bițiBitXor
^=var ^= exprOR exclusiv pe biți și atribuireBitXorAssign
|pat | patAlternative de pattern
|expr | exprOR pe bițiBitOr
|=var |= exprOR pe biți și atribuireBitOrAssign
||expr || exprOR logic care abandonează execuția la prima expresie evaluată ca adevărat
?expr?Propagarea erorilor

Simboluri non-operator

Următoarea listă conține toate simbolurile care nu funcționează ca operatori; adică, ele nu se comportă ca o funcție sau o apelare de metodă.

Tabelul B-2 arată simbolurile care apar singure și sunt valabile într-o varietate de locuri.

Tabelul B-2: Sintaxa Stand-Alone

SimbolExplicație
'identDurata de viață numită sau eticheta loop-ului
...u8, ...i32, ...f64, ...usize, etc.Literal numeric de un anumit tip
"..."Literal de șir de caractere
r"...", r#"..."#, r##"..."##, etc.Literal de șir de caractere brut, caracterele de evadare nu sunt procesate
b"..."Literal de șir de byte-uri; construiește un array de byte-uri în loc de un șir
br"...", br#"..."#, br##"..."##, etc.Literal de șir de byte-uri brut, combinația dintre șirul brut de caractere și șirul de byte-uri
'...'Literal de caracter
b'...'Literal de byte ASCII
|...| exprÎnchidere (Closure)
!Tipul de fundal întotdeauna gol pentru funcțiile divergente
_Legare a modelului "Ignorat"; de asemenea, este utilizat pentru a face literalele întregi lizibile

Tabelul B-3 arată simbolurile care apar în contextul unei cale prin modulul ierarhia către un element.

Tabelul B-3: Sintaxa legată de Path

SimbolExplicație
ident::identCalea Namespace-ului
::pathCale relativă la rădăcina crate-ului (adică, o cale absolută explicită)
self::pathCale relativă la modulul curent (adică, o cale relativă explicită)
super::pathCale relativă la părintele modulului curent
type::ident, <type as trait>::identConstante asociate, funcții, și tipuri
<type>::...Element asociat pentru un tip care nu poate fi numit direct (de exemplu, <&T>::..., <[T]>::..., etc.)
trait::method(...)Dezambiguizarea unui apel de metoda prin numirea tipului care o definește
type::method(...)Dezambiguizarea unui apel de metoda prin numirea tipului pentru care este definit
<type as trait>::method(...)Dezambiguizarea unui apel de metoda prin numirea trăsăturii și tipului

Tabelul B-4 arată simboluri care apar în contextul utilizării parametrilor de tip generic.

Tabelul B-4: Generics

SimbolExplicație
path<...>Specifică parametrii către tipul generic într-un tip (de exemplu, Vec<u8>)
path::<...>, method::<...>Specifică parametrii către tipul generic, funcție, sau metodă într-o expresie; de multe ori se referă la acesta ca la turbofish (de exemplu, "42".parse::<i32>())
fn ident<...> ...Definește funcție generică
struct ident<...> ...Definește structura generică
enum ident<...> ...Definește enumerația generică
impl<...> ...Definește implementarea generică
for<...> typeLimitele de durată de viață cu rang superior (Higher-ranked lifetime bounds)
type<ident=type>Un tip generic în care unul sau mai multe tipuri asociate au atribuiri specifice (de exemplu, Iterator<Item=T>)

Tabelul B-5 arată simboluri care apar în contextul constrângerii parametrilor de tip generic cu limite de trăsături (Trait bounds).

Tabelul B-5: Limitările Trăsăturilor

SimbolExplicație
T: UParametrul generic T limitat la tipurile care implementează U
T: 'aTipul generic T trebuie să supraviețuiască duratei de viață 'a (asta înseamnă că tipul nu poate să conțină în mod tranzitiv orice referințe cu duratele de viață mai scurte decât 'a)
T: 'staticTipul generic T nu conține alte referințe împrumutate decât cele 'static
'b: 'aDurata de viață generică 'b trebuie să supraviețuiască duratei de viață 'a
T: ?SizedPermite parametrului de tip generic să fie un tip dinamic de dimensiune
'a + trait, trait + traitConstrângere de tip compusă

Tabelul B-6 arată simbolurile care apar în contextul apelării sau definirii de macrouri și specificarea atributelor pe un element.

Tabelul B-6: Macrouri și Atribute

SimbolExplicatie
#[meta]Atribut outer
#![meta]Atribut inner
$identSubstituție macro
$ident:kindCaptură macro
$(…)…Repetitie macro
ident!(...), ident!{...}, ident![...]Invocare macro

Tabelul B-7 arată simbolurile care creează comentarii.

Tabelul B-7: Comentarii

SimbolExplicatie
//Comentariu de linie
//!Comentariu de linie doc intern
///Comentariu de linie doc extern
/*...*/Comentariu de bloc
/*!...*/Comentariu de bloc doc intern
/**...*/Comentariu de bloc doc extern

Tabelul B-6 arată simboluri care apar în contextul apelării sau definirii macrourilor și specificarea atributelor unui element.

Tabelul B-6: Macrouri și Atribute

SimbolExplicație
#[meta]Atribut extern
#![meta]Atribut intern
$identSubstituție macro
$ident:kindCaptură macro
$(…)…Repetare macro
ident!(...), ident!{...}, ident![...]Invocare macro

Tabelul B-7 arată simbolurile care creează comentarii.

Tabelul B-7: Comentarii

SimbolExplicație
//Comentariu linie
//!Comentariu intern documentație linie
///Comentariu extern documentație linie
/*...*/Comentariu bloc
/*!...*/Comentariu intern documentație bloc
/**...*/Comentariu extern documentație bloc

Tabelul B-8 arată simbolurile care apar în contextul folosirii tuplurilor.

Tabelul B-8: Tuple

SimbolExplicație
()Tuplă goală (cunoscută ca unit), atât literal cât și tip
(expr)Expresie între paranteze
(expr,)Expresie tuplă cu un singur element
(type,)Tip de tuplă cu un singur element
(expr, ...)Expresie tuplă
(type, ...)Tip de tuplă
expr(expr, ...)Expresie de apel de funcție; de asemenea utilizată pentru a inițializa structuri de tuplă și variante enum de tuplă
expr.0, expr.1, etc.Indexare de tuplă

Tabelul B-9 arată contextele în care sunt utilizate acoladele.

Tabelul B-9: Acolade

ContextExplicație
{...}Expresie bloc
Type {...}Literal struct

Tabelul B-10 arată contextele în care sunt utilizate parantezele pătrate.

Tabelul B-10: Paranteze pătrate

ContextExplicație
[...]Literal de array
[expr; len]Literal de array conținând len copii ale expr
[type; len]Tip de array conținând len instanțe ale type
expr[expr]Indexare în colecție. Poate fi supraîncărcată (Index, IndexMut)
expr[..], expr[a..], expr[..b], expr[a..b]Indexare în colecție care pretinde a fi secțiune de colecție, folosind Range, RangeFrom, RangeTo, sau RangeFull ca „index”