Menu
Coddy logo textTech

Iteração Mutável

Parte da seção Logic & Flow do Journey de Rust da Coddy — lição 12 de 66.

Às vezes, você precisa fazer mais do que apenas ler elementos de um vetor - você precisa modificá-los. Enquanto a lição anterior mostrou como iterar e ler valores, esta lição ensina como alterar os elementos durante a iteração usando referências mutáveis.

Para modificar elementos enquanto itera, você precisa usar &mut em vez de & no seu loop for:

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

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

O &mut numbers cria uma referência mutável para o vetor, e cada iteração fornece uma referência mutável para um elemento individual. O operador * (chamado de operador de desreferência) é usado para acessar e modificar o valor real para o qual a referência aponta.

Este padrão é incrivelmente útil para transformar dados no local. Em vez de criar um novo vetor com valores modificados, você pode atualizar o existente de forma eficiente. O vetor deve ser declarado como mut para que isso funcione, já que você está alterando seu conteúdo.

Após o loop acima, numbers conteria [2, 4, 6, 8] - cada valor original dobrado no local.

challenge icon

Desafio

Fácil

Escreva uma função add_ten_to_all que recebe um vetor mutável numbers e adiciona 10 a cada elemento no próprio local (in place), retornando então o vetor modificado.

Use a iteração mutável com &mut para modificar cada elemento diretamente. Lembre-se de usar o operador de desreferência * para acessar e modificar os valores reais.

Parâmetros:

  • numbers (Vec<i32>): Um vetor mutável de inteiros para modificar

Retorno: O vetor modificado com 10 adicionado a cada elemento (Vec<i32>)

Folha de consulta

Para modificar elementos de um vetor durante a iteração, use referências mutáveis com &mut:

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

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

Pontos-chave:

  • &mut numbers cria uma referência mutável para o vetor
  • Cada iteração fornece uma referência mutável para um elemento individual
  • O operador * (operador de desreferência) acessa e modifica o valor real
  • O vetor deve ser declarado como mut para permitir a modificação

Este padrão permite transformar dados in-place (no local) de forma eficiente, sem criar um novo vetor.

Experimente você mesmo

fn add_ten_to_all(numbers: Vec<i32>) -> Vec<i32> {
    // Escreva o código aqui
}
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 Logic & Flow