Borrow en bucles
Parte de la sección Fundamentos del Journey de Rust de Coddy. Lección 67 de 75.
En Rust, cada valor tiene un propietario, y cuando usas un valor en un bucle, Rust necesita saber si quieres tomarlo prestado (solo observarlo temporalmente) o adquirir su propiedad (consumirlo).
Esto es importante porque, si un bucle se hace cargo de tus datos, ya no podrás usar esos datos después de que termine el bucle. Comprender esta distinción es la clave para escribir bucles correctamente en Rust.
Por ejemplo, considera los siguientes datos:
let numbers = vec![1, 2, 3, 4, 5];
let mut sum = 0;Método 1: Mirar 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 errorPiensa en ello así:
- 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 después el álbum estará vacío
Ahora este estilo:
for num in numbers.iter() {}Es similar a esto:
for num in &numbers {}Y un bucle de mutación, que necesita que el vector se declare con mut:
let mut numbers = vec![1, 2, 3, 4, 5];
for num in numbers.iter_mut() {
*num *= 2;
}También se puede escribir así:
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 Fundamentos
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ámicaPractica por tu cuenta: Compilador de Rust online