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

Appendice B: Operatori e Simboli

Questa appendice contiene un glossario della sintassi di Rust, compresi gli operatori e altri simboli che appaiono da soli o nel contesto di percorsi, generics, traits, macro, attributi, commenti, tuple e parentesi.

Operatori

La Tabella B-1 contiene gli operatori in Rust, un esempio di come l’operatore appare nel contesto, una breve spiegazione e se l’operatore in questione è sovrascrivibile. Se un operatore è sovrascrivibile, viene elencato il relativo trait da utilizzare per sovrascriverlo.

Tabella B-1: Operatori

OperatoreEsempioSpiegazioneSovrascrivibile
!ident!(...), ident!{...}, ident![...]Espansione delle macro
!!exprComplemento logico o bit per bitNot
!=expr != exprDifferentePartialEq
%expr % exprResto aritmeticoRem
%=var %= exprResto aritmetico con assegnazioneRemAssign
&&expr, &mut exprPrestito (Borrow)
&&type, &mut type, &'a type, &'a mut typeType Puntatore a Prestito
&expr & exprAND Bit per BitBitAnd
&=var &= exprAND Bit per Bit con assegnazioneBitAndAssign
&&expr && exprAND logico
*expr * exprMoltiplicazione aritmeticaMul
*=var *= exprMoltiplicazione aritmetica con assegnazioneMulAssign
**exprDe-referenziazioneDeref
**const type, *mut typePuntatore grezzo (Raw pointer)
+trait + trait, 'a + traitVincolo per type composto
+expr + exprAddizione aritmenticaAdd
+=var += exprAddizione aritmentica con assegnazioneAddAssign
,expr, exprSeparatore di argomenti ed elementi
-- exprNegazione aritmeticaNeg
-expr - exprSottrazione aritmeticaSub
-=var -= exprSottrazione aritmetica con assegnazioneSubAssign
->fn(...) -> type, |…| -> typeType di ritorno per funzioni e chiusure
.expr.identAccesso a campo
.expr.ident(expr, ...)Chiamata a metodo
.expr.0, expr.1, etc.Indicizzazione tupla
...., expr.., ..expr, expr..exprRange esclusivoPartialOrd
..=..=expr, expr..=exprRange inclusivoPartialOrd
....exprAggiornamento struct
..variant(x, ..), struct_type { x, .. }“E il resto” con assrgnazione tramite pattern
...expr...expr(Non più utilizzabile, usa ..=) In un pattern: range inclusivo
/expr / exprDivisione aritmeticaDiv
/=var /= exprDivisione aritmetica con assegnazioneDivAssign
:pat: type, ident: typeVincoli
:ident: exprInizializzazione campo di struct
:'a: loop {...}Etichetta loop
;expr;Terminatore di dichiarazioni ed elementi
;[...; len]Parte della sintassi per vettori a grandezza fissa
<<expr << exprShift a sinistraShl
<<=var <<= exprShift a sinistra con assegnazioneShlAssign
<expr < exprMinorePartialOrd
<=expr <= exprMinore o ugualePartialOrd
=var = expr, ident = typeAssegnazione/equivalenza
==expr == exprComparazione di egualitàPartialEq
=>pat => exprParte della sintassi del ramo di match
>expr > exprMaggiorePartialOrd
>=expr >= exprMaggiore o ugualePartialOrd
>>expr >> exprShift a destraShr
>>=var >>= exprShift a destra con assegnazioneShrAssign
@ident @ patVincolo di Pattern
^expr ^ exprOR esclusivo Bit per BitBitXor
^=var ^= exprOR esclusivo Bit per Bit con assegnazioneBitXorAssign
|pat | patPattern alternativi
|expr | exprOR Bit per BitBitOr
|=var |= exprOR Bit per Bit con assegnazioneBitOrAssign
||expr || exprOR logico
?expr?Propagazione errore

Simboli

L’elenco seguente contiene tutti i simboli che non funzionano come operatori, cioè non si comportano come una funzione o una chiamata di metodo.


La Tabella B-2 mostra i simboli che appaiono da soli e sono validi in diverse posizioni.

Tabella B-2: Sintassi stand alone

SimboloSpiegazione
'identLifetime nominale o etichetta loop
Numeri immediatamente seguiti da u8, i32, f64, usize, ecc.Letterale numerico di un type specifico
"..."Letterale stringa
r"...", r#"..."#, r##"..."##, etc.Letterale stringa grezzo, senza elaborazione dei caratteri di escape
b"..."Letterale byte di stringa; costituisce un vettore di byte anzichè una stringa
br"...", br#"..."#, br##"..."##, etc.Letterale byte di stringa grezzo
'...'Letterale carattere
b'...'Letterale byte ASCII
|…| exprChiusure
!Type vuoto per funzioni divergenti
_Pattern “Ignorato” nel ramo di match; usato anche per rendere i letterali più leggibili

La Tabella B-3 mostra i simboli che venmgonb usati nel contesto dei percorosi di un elemento nella gerarchia dei moduli.

Tabella B-3: Sintassi relativa ai Percorsi

SimboloSpiegazione
ident::identNomenclatura percorso
::pathPercorso relativo al preludio esterno, dove sono tutti gli altri crate (es., un percorso assoluto esplicito che include il nome del crate)
self::pathPercorso relativo al modulo corrente (es., un percorso relativo esplicito).
super::pathPercorso relativo al genitore del modulo corrente
type::ident, <type as trait>::identCostanti, funzioni o type associati
<type>::...Elemento associato per un type generico (es, <&T>::..., <[T]>::..., etc.)
trait::method(...)Disambiguare una chiamata a un metodi specificando il trait che lo definisce
type::method(...)Disambiguare una chiamata a un metodo specificando il type in cui per cui è definito
<type as trait>::method(...)Disambiguare una chiamata a un metodo specificando il trait e il type

La Tabella B-4 mostra i simboli che appaiono quando si usano type generici come parametri.

Table B-4: Generici

SimboloSpiegazione
percorso<...>Specifica parametri a type generici in u n type (es., Vec<u8>)
percorso::<...>, metodo::<...>Specifica parametri a type, funzioni, metodi genirici in un’espressione; spesso chiamato operatore turbofish (e.g., "42".parse::<i32>())
fn ident<...> ...Definizione di funzione generica
struct ident<...> ...Definizione di struct generica
enum ident<...> ...Definizione di enum generica
impl<...> ...Definizione di implementazione generica
for<...> typeVincolo di lifetime prioritario
type<ident=type>Un type generico dove uno o più type associati hanno assegnazioni specifiche (es., Iteratore<Elemento=T>)

La Tabella B-5 mostra i simboli che appaiono nel contesto della dichiarazioni di type generici come paramentri e dei corrispettivi vincoli di trait.

Table B-5: Vincoli di Trait

SimboloSpiegazione
T: UParamentro generico T vincolato a type che implementano U
T: 'aType generico type T con longevità 'a (implica cxhe non possa conteenre reference con lifetime inferiore ad 'a)
T: 'staticType generico T contenente solo reference con longevità infinita
'b: 'aLifetime generica 'b deve essere maggiore di lifetime 'a
T: ?SizedConsente a parametri con type generico di essere type a dimensione dimamica
'a + trait, trait + traitDefinizione di vincolo multiplo

La Tabella B-6 mostra i simboli utilizzati nell’ambito della invocazione o definizione di macro e degli attributi di un dato elemento.

Table B-6: Macro e Attributi

SimboloSpiegazione
#[meta]Attributo esterno
#![meta]Attributo interno
$identSostituzione macro
$ident:kindMetavariabile macro
$(...)...Ripetizione macro
ident!(...), ident!{...}, ident![...]Invocazione macro

La Tabella B-7 mostra i simboli che creano commenti.

Tabella B-7: Commenti

SimboloSpiegazione
//Commento in linea
//!Linea interna commento documentazione
///Linea esterna commento documentazione
/*...*/Blocco di commento, commento multilinea
/*!...*/Blocco interno commento documentazione
/**...*/Blocco esterno commento documentazione

La Tablella B-8 mostra i contesti in cui sono usate le parentesi tonde.

Table B-8: Parentesi Tonde

SimboloSpiegazione
()Tupla vuota (unit), sia letterale che type
(expr)Espressione tra parentesi
(expr,)Espressione di tupla con singolo elemento
(type,)Tupla con singolo type
(expr, ...)Espressione tupla
(type, ...)Type tupla
expr(expr, ...)Espressione di chiamata di funzione; usato anche per inizializzare le varianti struct tupla e enum tupla

La Tabella B-9 mostra i contesti di utilizzo delle parentesi graffe.

Tabella B-9: Parentesi Graffe

ContestoSpiegazione
{...}Blocco di codice
Type {...}Struct letterali

La Tabella B-10 mostra i contesti in cui vengono utilizzate le parentesi quadre.

Tabella B-10: Parentesi Quadre

ContestoSpiegazione
[...]Vettore letterale
[x; n]Vettore letterale contenente n copie di x
[type; n]Vettore tipizzato contenente n istanze di type
collezione[i]Indicizzazione di una collezione. Sovraccaricabile (Index, IndexMut)
expr[..], expr[a..], expr[..b], expr[a..b]Indicizzazione in collezioni per estrazione slice, usando Range, RangeFrom, RangeTo, o RangeFull come “indici”