Borrow en bucles
Parte de la sección Fundamentals del Journey de Rust de Coddy — lección 67 de 75.
Cuando escribimos un bucle en Rust, tenemos dos formas principales de trabajar con nuestros datos: podemos mirarlos (usando &) o tomarlos. Por ejemplo, considera los siguientes datos:
let numbers = vec![1, 2, 3, 4, 5];
let mut sum = 0;Método 1: Mirando los datos (usando &):
for number in &numbers {
sum += number;
}
println!("I can use it here: {:?}", numbers);Método 2: Tomar los datos (sin &):
for number in numbers {
sum += number;
}
// println!("Can't use {:?} anymore!", numbers);
// Esto causaría un errorPiénsalo de esta manera:
- Usar
&es como mirar un álbum de fotos: puedes ver todas las fotos, pero el álbum permanece intacto
- No usar
&es como sacar las fotos: puedes usarlas, pero el álbum quedará vacío después
Ahora este estilo:
for num in numbers.iter() {}Es similar a esto:
for num in &numbers {}Y un bucle de mutación:
for num in numbers.iter_mut() {
*num *= 2;
}También se puede escribir de esta manera:
for num in &mut numbers {
*num *= 2;
}Hoja de referencia
En los bucles de Rust, puedes observar los datos (usando &) o tomar la propiedad de ellos:
Observar datos (préstamo):
let numbers = vec![1, 2, 3, 4, 5];
for number in &numbers {
sum += number;
}
// numbers can still be used after the loopTomar la propiedad:
let numbers = vec![1, 2, 3, 4, 5];
for number in numbers {
sum += number;
}
// numbers cannot be used after the loopMétodos de iterador:
// These are equivalent:
for num in numbers.iter() {}
for num in &numbers {}
// For mutation:
for num in numbers.iter_mut() { *num *= 2; }
for num in &mut numbers { *num *= 2; }Pruébalo tú mismo
Esta lección no incluye un desafío de código.
Esta lección incluye un breve cuestionario. Empieza la lección para responderlo y registrar tu progreso.
Todas las lecciones de Fundamentals
4Operadores Parte 1
Operadores aritméticosOperador de móduloAtajos aritméticosOperadores de comparaciónComparación de strings5Operadores Parte 2
Operadores lógicos Parte 1Operadores lógicos Parte 2Repaso - Lógica simpleOperadores lógicos Parte 33Variables Parte 2
Declaración de tiposConvenciones de nomenclaturaInferencia de tiposResumen - Inicializar variablesConversión de tipos9Bucles
For sobre seriesBucle WhileBreakContinueBucle anidadoEtiquetas de bucleBucle infinitoResumen - Entrada dinámica