String vs. &str
Fa parte della sezione Logica e flusso del percorso Rust di Coddy. Lezione 54 di 66.
Rust ha due tipi principali di stringa che svolgono funzioni diverse: String e &str. Capire la differenza tra loro è fondamentale per lavorare efficacemente con il testo in Rust.
Una String è una stringa posseduta e allocata nell'heap che puoi modificare. Quando crei una String, il tuo programma possiede quei dati ed è responsabile della gestione della loro memoria. Puoi ampliarla, ridurla e modificarne il contenuto perché è mutabile quando viene dichiarata con mut.
let mut my_string = String::from("Hello");
my_string.push_str(" World"); // Questo funziona perché String è posseduta e modificabileAl contrario, &str (pronunciato "string slice") è una vista presa in prestito e immutabile sui dati di una stringa. Non possiede i dati a cui punta: è solo un riferimento a un contenuto di stringa che esiste altrove. I letterali stringa come "Hello" sono in realtà di tipo &str.
let my_slice: &str = "Hello World"; // Questa è una slice di stringaImmagina che String possieda un libro su cui puoi scrivere e che puoi modificare, mentre &str è come prendere in prestito il libro di qualcun altro: puoi leggerlo, ma non puoi cambiarlo. Questa distinzione è fondamentale per il sistema di proprietà di Rust e contribuisce a garantire la sicurezza della memoria.
Provalo tu
Questa lezione non include una sfida di codice.
Questa lezione include un breve quiz. Inizia la lezione per rispondere e tenere traccia dei tuoi progressi.
Tutte le lezioni di Logica e flusso
1Flusso di controllo avanzato
L’espressione 'match'Corrispondenza di più valoriCorrispondenza di intervalliL’espressione 'if let'I cicli come espressioniRiepilogo - Parser di comandi semplice4Raggruppare i dati con le struct
Che cos'è una struct?Panoramica sulle structAccedere ai campi di una structStruct mutabiliLe struct come parametri di funzioneStruct tuplaRiepilogo - Crea una struct Book2Introduzione ai vettori
Che cos'è un vettore?Creare un vettoreAggiungere elementi con pushAccedere agli elementi di un vettoreScorrere un vettoreIterazione mutabileRimuovere elementiRiepilogo - Tracker di punteggi di base5Coppie chiave-valore con le mappe hash
Che cos'è una mappa hash?Creare una mappa hashInserire coppie chiave-valoreAccedere ai valoriIterare su una mappa hashAggiornare un valoreRimuovere una coppiaRiepilogo - Contatore di parole8Progetto: semplice inventario di articoli
Impostazione del progettoAggiungere un articoloControllare le scorteVendere un articoloMettere insieme il tutto3Lista di cose da fare da riga di comando
Impostazione del progettoAggiungere un'attivitàVisualizzare tutte le attivitàRimuovere un'attivitàCodice finale6Gestire l’assenza con 'Option'
Che cos’è un 'Option'?Usare 'match' con 'Option'is_some() e is_none()Estrarre il valore da un 'Option'Il metodo expectFornire un valore predefinito: unwrap_orRiepilogo - Trovare un elemento9Slice di stringa e altro
String vs. &strCreare slice di stringaSlice come parametri di funzioneAltre sliceRiepilogo - Trovare la prima parolaEsercitati da solo: Compilatore Rust online