# 🎯 Definição > [!Abstract] Definição > Em Rust, variáveis são espaços nomeados na memória para armazenar dados. O diferencial fundamental da linguagem é que **variáveis são imutáveis por padrão**. Essa escolha de design visa garantir segurança de memória e facilitar a concorrência. # 📝 Notas ## 1. Imutabilidade e `let` Por padrão, uma vez que um valor é atribuído a um nome, ele não pode ser alterado. ```rust fn main() { let x = 5; // x = 6; // Isso causaria um erro de compilação! println!("O valor de x é: {x}"); } ``` ## 2. Mutabilidade com `mut` Para permitir que um valor mude, deve-se usar explicitamente a palavra-chave `mut`. ```rust fn main() { let mut y = 10; println!("Valor inicial: {y}"); y = 12; // Permitido pois y é mutável println!("Valor alterado: {y}"); } ``` ## 3. Constantes (`const`) Diferente de variáveis imutáveis, constantes: - Devem ter o tipo anotado explicitamente. - Podem ser declaradas em qualquer escopo (inclusive global). - São definidas em tempo de compilação. ```rust const SEGUNDOS_EM_UM_MINUTO: u32 = 60; const GLOBAL_VAR: &str = "Constante Global"; ``` ## 4. Shadowing (Sombreamento) Rust permite declarar uma nova variável com o mesmo nome de uma variável anterior. A segunda variável "sombreia" a primeira. > [!TIP] Vantagem do Shadowing > Permite transformar um valor (ex: mudar o tipo de uma String para um número) mantendo o mesmo nome, sem precisar marcar a variável como `mut`. ```rust fn main() { let espacos = " "; // Tipo: &str let espacos = espacos.len(); // Tipo: usize (Shadowing) println!("Quantidade de espaços: {espacos}"); } ``` # 🔗 Conceitos relacionados - [[Tipos de dados em Rust]] - [[Escopo de variáveis no Rust]] # 📚 Referências - [3: Creating variables in Rust - YouTube](https://www.youtube.com/watch?v=j7npg1YOwkM) - [Variables and Mutability - The Rust Programming Language](https://doc.rust-lang.org/book/ch03-01-variables-and-mutability.html)