Menu
CoddyTech

Borrow no Loop

Parte da seção Fundamentos do Journey de Rust da Coddy. Lição 67 de 75.

Em Rust, todo valor tem um proprietário, e, quando você usa um valor em um loop, o Rust precisa saber se você quer emprestá-lo (apenas dar uma olhada nele temporariamente) ou assumir sua propriedade (consumi-lo).

Isso é importante porque, se um loop assumir a propriedade dos seus dados, você não poderá mais usar esses dados depois que o loop terminar. Entender essa distinção é fundamental para escrever loops corretamente em Rust.

Por exemplo, considere os seguintes dados:

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

Método 1: Observando os dados (usando &):

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

Método 2: Movendo os dados (sem &):

for number in numbers {
    sum += number;
}
// println!("Can't use {:?} anymore!", numbers);
// Isso causaria um erro

Pense nisso assim:

  1. Usar & é como olhar um álbum de fotos: você pode ver todas as fotos, mas o álbum permanece intacto
  2. Não usar & é como tirar as fotos: você pode usá-las, mas o álbum ficará vazio depois

Agora, este estilo:

for num in numbers.iter() {}

É parecido com isto:

for num in &numbers {}

E um loop de mutação, que precisa que o vetor seja declarado com mut:

let mut numbers = vec![1, 2, 3, 4, 5];
for num in numbers.iter_mut() { 
    *num *= 2;
}

Também pode ser escrito desta forma:

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

Experimente você mesmo

Esta lição não inclui um desafio de código.

quiz iconTeste seus conhecimentos

Esta lição inclui um quiz rápido. Comece a lição para respondê-lo e acompanhar seu progresso.

Todas as lições de Fundamentos

Pratique por conta própria: Compilador de Rust online