Fácil Rust

Tornando uma variável mutável

Enunciado

O código abaixo tenta modificar a variável contador, mas não compila porque ela é imutável. Corrija o programa para que a variável possa ser alterada e imprima o valor final.

Requisitos

  • A variável contador deve ser declarada como mutável.
  • O programa deve compilar sem erros.
  • A saída deve mostrar Valor final: 15.

Código inicial

fn main() {
    let contador = 10;
    contador += 5;
    println!("Valor final: {contador}");
}

Saída esperada

Valor final: 15
Ver dica

Adicione mut após let na declaração de contador.

Mostrar solução
fn main() {
    // Adicionamos `mut` para permitir alteração
    let mut contador = 10;
    contador += 5; // agora é permitido
    println!("Valor final: {contador}");
}

Passo a passo

  1. A linha let contador = 10; cria uma variável imutável. Por padrão, Rust não permite alterar seu valor.
  2. A tentativa de fazer contador += 5; gera erro de compilação: cannot assign twice to immutable variable.
  3. Para corrigir, mudamos a declaração para let mut contador = 10;. O mut indica ao compilador que a variável pode ser modificada.
  4. Agora contador += 5; é válido e soma 5 ao valor atual, resultando em 15.
  5. O println! exibe o valor final formatado.

Por que funciona

Em Rust, a imutabilidade é o padrão para evitar alterações acidentais. Ao usar mut, você declara explicitamente que a variável sofrerá mutação, e o compilador passa a permitir atribuições. Isso mantém a segurança sem abrir mão da flexibilidade quando necessário.

Erros comuns

  • Esquecer o mut: let contador = 10; e depois tentar contador += 5; causa erro de compilação. Corrija com let mut contador = 10;.
  • Usar mut desnecessariamente: se a variável nunca for alterada, o compilador emite um aviso unused_mut. Remova o mut nesse caso.
  • Tentar modificar uma constante: const C: i32 = 10; não pode ser mut nem alterada. Use let mut para valores mutáveis.

Outra forma de resolver

Se você não precisa modificar a variável original, pode usar shadowing para criar uma nova variável com o valor atualizado:

fn main() {
    let contador = 10;
    let contador = contador + 5;
    println!("Valor final: {contador}");
}

Essa abordagem é preferível quando você quer manter a variável original intacta e criar uma nova com o mesmo nome.

Saída esperada

Valor final: 15