Menu
Coddy logo textTech

Prestito nel ciclo

Fa parte della sezione Fondamenti del percorso Rust di Coddy. Lezione 67 di 75.

In Rust, ogni valore ha un proprietario e, quando usi un valore in un ciclo, Rust deve sapere se vuoi prenderlo in prestito (dargli solo un’occhiata temporaneamente) o assumerne la proprietà (consumarlo).

Questo è importante perché, se un ciclo acquisisce la proprietà dei tuoi dati, non puoi più usare quei dati dopo la fine del ciclo. Comprendere questa distinzione è fondamentale per scrivere correttamente i cicli in Rust.

Per esempio, considera i seguenti dati:

let numbers = vec![1, 2, 3, 4, 5];
let mut sum = 0;

Metodo 1: Esaminare i dati (usando &):

for number in &numbers {
    sum += number;
}
println!("I can use it here: {:?}", numbers);

Metodo 2: Prendere i dati (senza &):

for number in numbers {
    sum += number;
}
// println!("Can't use {:?} anymore!", numbers);
// Questo causerebbe un errore

Pensala così:

  1. Usare & è come guardare un album fotografico: puoi vedere tutte le foto, ma l'album rimane intatto
  2. Non usare & è come togliere le foto: puoi usarle, ma dopo l'album sarà vuoto

Ora questo stile:

for num in numbers.iter() {}

È simile a questo:

for num in &numbers {}

E un ciclo di mutazione:

for num in numbers.iter_mut() { 
    *num *= 2;
}

Si può anche scrivere così:

for num in &mut numbers { 
    *num *= 2;
}

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 Fondamenti

Esercitati da solo: Compilatore Rust online