Menu
Coddy logo textTech

String vs. &str

Fa parte della sezione Logica e flusso del percorso Rust di Coddy. Lezione 54 di 66.

Rust ha due tipi di stringa principali 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 i contenuti perché è mutabile quando viene dichiarata con mut.

let mut my_string = String::from("Hello");
my_string.push_str(" World"); // Funziona perché String ha un proprietario ed è mutabile

Al contrario, &str (pronunciato «fetta di stringa») è una vista presa in prestito e immutabile sui dati di una stringa. Non possiede i dati a cui punta: è solo un riferimento a del contenuto di stringa che esiste altrove. I valori letterali stringa come "Hello" sono in realtà di tipo &str.

let my_slice: &str = "Hello World"; // Questa è una slice di stringa

Pensa a String come a un libro di tua proprietà 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 ownership di Rust e contribuisce a garantire la sicurezza della memoria.

Provalo tu

Questa lezione non include una sfida di codice.

quiz iconMettiti alla prova

Questa lezione include un breve quiz. Inizia la lezione per rispondere e tenere traccia dei tuoi progressi.

Tutte le lezioni di Logica e flusso

Esercitati da solo: Compilatore Rust online