Appendice A: Parole chiave
Il seguente elenco contiene parole chiave che sono riservate per l’uso attuale o futuro del linguaggio Rust. In quanto tali, non possono essere utilizzate come identificatori (tranne che come identificatori grezzi, come discuteremo nella sezione dedicata). Gli identificatori sono nomi di funzioni, variabili, parametri, elementi di struct, moduli, crate, costanti, macro, valori statici, attributi, type, trait o lifetime.
Parole Chiave Attualmente in Uso
Di seguito è riportato un elenco di parole chiave attualmente in uso, con la loro funzionalità descritta.
as
- eseguire un casting primitivo, disambiguare il trait specifico che contiene un elemento o rinominare elementi nelle dichiarazioniuse
async
- restituire unFuture
invece di bloccare il thread correnteawait
- sospendere l’esecuzione fino a quando il risultato di unFuture
è prontobreak
- uscire immediatamente da un cicloconst
- definire elementi costanti o puntatori raw costanticontinue
- continuare all’iterazione successiva del ciclocrate
- in un percorso di modulo, si riferisce alla radice del cratedyn
- dispatch dinamico a un oggetto traitelse
- alternativa per i costrutti di controllo di flussoif
eif let
enum
- definire un’enumerazioneextern
- collegare una funzione o una variabile esternafalse
- letterale booleano falsofn
- definire una funzione o il tipo di puntatore a funzionefor
- iterare su elementi da un iteratore, implementare un trait o specificare una lifetime di rango superioreif
- ramificazione in base al risultato di un’espressione condizionaleimpl
- implementare funzionalità innate o di traitin
- parte della sintassi del ciclofor
let
- inizializzare una variabileloop
- ciclo senza condizionimatch
- abbinare un valore a patternmod
- definire un modulomove
- fare in modo che una closure prenda possesso di tutte le sue catturemut
- denotare mutabilità in reference, puntatori raw o binding di patternpub
- denotare visibilità pubblica nei campi delle strutture, nei blocchiimpl
o nei moduliref
- inizializzare per referencereturn
- ritorno dalla funzioneSelf
- un alias di type per il type che stiamo definendo o implementandoself
- soggetto del metodo o modulo correntestatic
- variabile globale o lifetime che dura per l’intera esecuzione del programmastruct
- definire una strutturasuper
- modulo genitore del modulo correntetrait
- definire un traittrue
- letterale booleano verotype
- definire un alias di type o un type associatounion
- definire un’unione; è solo una parola chiave quando utilizzata in una dichiarazione di unioneunsafe
- denotare codice, funzioni, trait o implementazioni non sicureuse
- portare simboli in scope; specificare catture precise per vincoli generici e di lifetimewhere
- denotare clausole che vincolano un typewhile
- ciclo condizionato al risultato di un’espressione
Parole Chiave Riservate per Usi Futuri
Le seguenti parole chiave non hanno ancora alcuna funzionalità ma sono riservate da Rust per un potenziale uso futuro.
abstract
become
box
do
final
gen
macro
override
priv
try
typeof
unsized
virtual
yield
Identificatori Grezzi
Gli Identificatori grezzi (raw identifiers) sono la sintassi che ti permette
di utilizzare parole chiave dove normalmente non sarebbero consentite. Utilizzi
un identificatore grezzo anteponendo a una parola chiave il prefisso r#
. Ad
esempio, match
è una parola chiave. Se provi a compilare la seguente funzione
che utilizza match
come nome:
File: src/main.rs
fn match(ago: &str, pagliaio: &str) -> bool {
pagliaio.contains(ago)
}
otterrai questo errore:
error: expected identifier, found keyword `match`
--> src/main.rs:4:4
|
4 | fn match(ago: &str, pagliaio: &str) -> bool {
| ^^^^^ expected identifier, found keyword
L’errore indica che non è possibile utilizzare la parola chiave match
come
identificatore di funzione. Per utilizzare match
come nome di funzione, devi
utilizzare la sintassi dell’identificatore grezzo, in questo modo:
File: src/main.rs
fn r#match(ago: &str, pagliaio: &str) -> bool { pagliaio.contains(ago) } fn main() { assert!(r#match("foo", "foobar")); }
Questo codice verrà compilato senza errori. Nota il prefisso r#
sul nome della
funzione nella sua definizione e il punto in cui la funzione viene chiamata in
main
.
Gli identificatori grezzi ti permettono di utilizzare qualsiasi parola che
scegli come identificatore, anche se si tratta di una parola chiave riservata.
Questo ci dà maggiore libertà nella scelta dei nomi degli identificatori e ci
permette di integrarci con programmi scritti in un linguaggio in cui queste
parole non sono parole chiave. Inoltre, gli identificatori grezzi ti
permettono di utilizzare librerie scritte in un’edizione di Rust diversa da
quella utilizzata dal tuo crate. Per esempio, try
non è una parola chiave
nell’edizione 2015, ma lo è nelle edizioni 2018, 2021 e 2024. Se dipendi da una
libreria scritta con l’edizione 2015 e che ha una funzione try
, dovrai
utilizzare la sintassi dell’identificatore grezzo, r#try
in questo caso, per
richiamare quella funzione dal tuo codice nelle edizioni successive. Per
ulteriori informazioni sulle edizioni, consulta Appendice E.