Salta ai contenuti

Promemoria Rust (cheat sheet)

Una pagina da consultare al volo, per le cose che vuoi ricontrollare senza rileggere un’intera lezione. Ogni sezione rimanda alla pagina che le spiega per bene.

Parola chiave Significato
let Dichiara una variabile (Variabili)
mut Rende mutabile una variabile o un riferimento (Variabili)
const Dichiara una costante (Variabili)
fn Dichiara una funzione (Funzioni)
struct Dichiara una struct (Struct)
enum Dichiara un enum (Enum)
impl Aggiunge metodi a un tipo (Struct, Trait)
trait Dichiara un trait (Trait)
match Fa pattern matching su un valore (Match)
if let / while let Confronta con un solo pattern (If let / while let)
loop / while / for I tre tipi di ciclo (Cicli, While, For)
break / continue Controllano un ciclo (Break/continue)
mod Dichiara un modulo (Moduli)
pub Rende un elemento pubblico fuori dal suo modulo (Moduli)
use Porta un percorso nello scope (Moduli)
unsafe Sblocca i puntatori grezzi e altre operazioni che controlli tu (Unsafe)
move Costringe una closure a prendere l’ownership dei valori catturati (Concorrenza)
& / &mut Prende in prestito un valore / lo prende in prestito in modo mutabile (Prestito)
Metodo Cosa fa
.len() Lunghezza in byte
.trim() Toglie gli spazi all’inizio e alla fine
.to_uppercase() / .to_lowercase() Converte in maiuscolo / minuscolo
.contains(pat) Dice se una sottostringa o un pattern è presente
.replace(from, to) Sostituisce tutte le occorrenze
.push_str(s) Aggiunge in fondo un &str
.push(c) Aggiunge in fondo un singolo char
.chars() Scorre la stringa carattere per carattere
.split(pat) Divide in un iteratore di sottostringhe
.parse::<T>() Converte il testo in un altro tipo (restituisce un Result)

Trovi dettagli ed esempi nella pagina Stringhe.

Metodo Cosa fa
.push(x) Aggiunge in fondo
.pop() Toglie e restituisce l’ultimo elemento (Option)
.remove(i) Toglie l’elemento all’indice i
.len() Numero di elementi
.is_empty() Dice se il vettore è vuoto
.get(i) Accesso sicuro per indice (Option, niente panic)
.iter() Scorre gli elementi per riferimento
.contains(&x) Dice se un valore è presente
.sort() Ordina sul posto
.sort_by_key(|x| ...) Ordina per un campo o una chiave calcolata
.dedup() Toglie i duplicati consecutivi (ordina prima)

Trovi dettagli ed esempi nelle pagine Vettori, Ordinamento e ricerca e Iteratori.

Tipo Usalo quando ti serve…
Vec<T> Una lista ordinata che può crescere
HashMap<K, V> Trovare velocemente un valore tramite la sua chiave
HashSet<T> Elementi unici e controlli veloci del tipo «c’è o non c’è?»
BTreeMap<K, V> Coppie chiave-valore tenute in ordine di chiave
VecDeque<T> Una coda: inserire e togliere da entrambe le estremità

Trovi dettagli ed esempi nelle pagine HashMap e HashSet e BTreeMap.

Metodo Funziona su Cosa fa
.unwrap() Entrambi Restituisce il valore, va in panic se è None/Err
.expect("msg") Entrambi Come .unwrap(), con un messaggio di panic tuo
.unwrap_or(default) Entrambi Restituisce il valore, oppure un valore di riserva
.is_some() / .is_none() Option Controlla di quale variante si tratta
.is_ok() / .is_err() Result Controlla di quale variante si tratta
? Entrambi Esce subito dalla funzione in caso di None/Err

Trovi dettagli ed esempi nelle pagine Option e Result.

Specificatore Cosa stampa
{} Visualizzazione normale (richiede il trait Display)
{:?} Formato di debug
{:#?} Formato di debug ben impaginato
{:.2} 2 cifre decimali
{:5} Riempie fino a una larghezza di 5
{name} Inserisce una variabile chiamata name

Trovi dettagli ed esempi nella pagina Output.

Comando Cosa fa
cargo new name Crea un nuovo progetto
cargo run Compila ed esegue
cargo check Cerca gli errori in fretta, senza generare l’eseguibile
cargo test Esegue i tuoi test
cargo add crate Aggiunge una dipendenza
cargo fmt Formatta il codice
cargo clippy Analizza il codice in cerca di errori comuni
cargo build --release Compila un eseguibile ottimizzato

Trovi dettagli ed esempi nella pagina Cargo e crate.

Sintassi Significato
1..5 Da 1 fino a 5, escluso
1..=5 Da 1 fino a 5, incluso
..3 Dall’inizio fino a 3, escluso
2.. Da 2 fino alla fine
.. Tutto

Trovi dettagli ed esempi nelle pagine For e Slice.

Ti serve… Crate Lezione
JSON (e altri formati) serde + serde_json JSON con Serde
Codice asincrono, timer, rete tokio Async/await
Un’interfaccia da riga di comando clap Strumento CLI con clap
Gestione degli errori semplice anyhow, thiserror anyhow e thiserror
Numeri casuali rand Numeri casuali
Espressioni regolari regex Espressioni regolari
Date e orari chrono Date e orari
Logging log + env_logger, tracing Logging
Un server web axum API web con Axum

Aggiungine uno qualsiasi con cargo add <crate>. Leggi Cargo e crate per capire come scegliere un buon crate.