Da trilha de Rust Este conceito ainda não saiu como card do dia. ir para o card de hoje

Rust Fundamentos Básico

Variáveis e mutabilidade

Em Rust, variáveis são imutáveis por padrão. Isso significa que, depois de declarar let x = 5;, você não pode alterar o valor de x — a menos que use let mut x = 5;. Essa imutabilidade padrão evita muitos bugs e facilita a concorrência, pois o compilador garante que um valor não será modificado inesperadamente.

Além do mut, Rust permite shadowing: declarar uma nova variável com o mesmo nome usando let novamente. A nova variável pode ter outro tipo e "esconde" a anterior. Diferente de mut, o shadowing cria uma nova variável, não modifica a existente.

Para valores constantes, usamos const (constantes em tempo de compilação) e static (variáveis globais com tempo de vida fixo). Constantes não podem ser mut e exigem anotação de tipo. Rust também tem inferência de tipos: na maioria das vezes, o compilador deduz o tipo a partir do valor atribuído, mas em casos ambíguos é preciso anotar explicitamente.

Neste card, você vai praticar let, let mut, shadowing, const, static e inferência — os blocos fundamentais para controlar dados em Rust.

Pontos-chave

  • Variáveis declaradas com let são imutáveis por padrão; use let mut para permitir alterações.
  • Shadowing (let x = ...; let x = ...;) cria uma nova variável e pode mudar o tipo.
  • const define constantes em tempo de compilação e exige anotação de tipo; static cria variáveis globais com tempo de vida 'static.
  • Rust infere o tipo na maioria dos casos, mas anotações explícitas são necessárias quando o tipo é ambíguo.
  • Tentar modificar uma variável imutável gera erro de compilação.
variaveis.rs
// Demonstra let, let mut, shadowing, const, static e inferência
const LIMITE: u32 = 100; // constante em tempo de compilação
static NOME: &str = "Rust"; // variável global imutável

fn main() {
    // let imutável (tipo inferido como i32)
    let x = 5;
    println!("x = {x}");

    // let mut permite alteração
    let mut y = 10;
    println!("y antes = {y}");
    y += 5;
    println!("y depois = {y}");

    // Shadowing: nova variável com mesmo nome, tipo diferente
    let x = x + 1; // ainda i32
    let x = "agora sou string"; // novo tipo &str
    println!("x sombreado = {x}");

    // Inferência com anotação explícita quando necessário
    let z: f64 = 3.14;
    println!("z = {z}");

    // Usando const e static
    println!("LIMITE = {LIMITE}, NOME = {NOME}");
}

Exercícios

  1. 1
    Fácil

    Tornando uma variável mutável

    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.

    Resolver
  2. 2
    Médio

    Shadowing e tipos diferentes

    Escreva um programa que comece com uma variável numero do tipo inteiro, calcule seu dobro e depois use shadowing para transformar numero em uma string que descreva o resultado. Imprima a string final.

    Resolver
  3. 3
    Desafio

    Constantes, estáticas e inferência

    Crie um programa que defina uma constante PI do tipo f64 com valor 3.14159, uma variável estática SAUDACAO do tipo &str com valor "Olá", e uma variável local raio cujo tipo seja inferido como f64. Calcule a área do círculo (PI * raio * raio) e imprima uma mensagem formatada usando SAUDACAO e o resultado com duas casas decimais.

    Resolver

Continue estudando