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 errorePensala così:
- Usare
&è come guardare un album fotografico: puoi vedere tutte le foto, ma l'album rimane intatto - 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.
Questa lezione include un breve quiz. Inizia la lezione per rispondere e tenere traccia dei tuoi progressi.
Tutte le lezioni di Fondamenti
4Operatori Parte 1
Operatori aritmeticiOperatore moduloAbbreviazioni aritmeticheOperatori di confrontoConfronto tra stringhe7Input/output di base
Stampare sulla consoleLeggere l'input dell'utenteRiepilogo - Fino a 120Riepilogo - Vero o falso5Operatori Parte 2
Operatori logici Parte 1Operatori logici Parte 2Ripasso - Logica sempliceOperatori logici Parte 311Funzioni
Dichiarare le funzioniParametri e argomentiValori restituitiValori restituiti multipliRiepilogo - funzione SigmaRiepilogo - funzione di validazione14Iterare sugli array
Guida ai rangeCiclo for avanzatoPrestito nel cicloOperazioni comuni sugli array3Variabili Parte 2
Dichiarazione del tipoConvenzioni di denominazioneInferenza del tipoRipasso - Inizializzare le variabiliConversione di tipo9Cicli
Ciclo for su sequenzeCiclo whileBreakContinueCiclo annidatoEtichette dei cicliCiclo infinitoRiepilogo - Input dinamico12Fondamenti degli array
Dichiarare gli arrayArray come parametroAccedere agli elementiModificare gli arrayRiepilogo - Stampare un array in modo leggibile15Operazioni sulle stringhe
Metodi delle stringheMacro format!Conversione delle stringheRipasso - FormattazioneEsercitati da solo: Compilatore Rust online