Aula 02 - Fundamentos da Linguagem 🧩
Objetivo
Objetivo: Entender como o Rust lida com dados através de variáveis imutáveis por padrão, conhecer os tipos primitivos e aprender o conceito de shadowing.
1. Variáveis e Imutabilidade 🔒
Por padrão, todas as variáveis no Rust são imutáveis. Isso é uma escolha de design para garantir segurança e concorrência.
Imutável vs Mutável
fn main() {
let x = 5; // Imutável
// x = 6; // ERRO de compilação!
let mut y = 10; // Mutável (usando 'mut')
println!("y era: {}", y);
y = 15; // OK!
println!("y agora é: {}", y);
}
2. Tipos Primitivos 🧱
Rust é uma linguagem de tipagem estática, mas possui inferência de tipos.
Tipos Escalares
- Inteiros:
i8,u8,i32(padrão),u32,i64,u64,isize,usize. - Ponto Flutuante:
f32,f64(padrão). - Booleano:
bool(trueoufalse). - Caractere:
char(representa um valor Unicode de 4 bytes).
Tipos Compostos
- Tuplas: Agrupam vários valores de tipos diferentes.
- Arrays: Agrupam valores do mesmo tipo com tamanho fixo.
3. Constantes vs Variáveis 💎
Constantes são sempre imutáveis e seu tipo deve ser anotado explicitamente.
--- ## 4. Shadowing (Sombreamento) 👤
Shadowing permite declarar uma nova variável com o mesmo nome de uma anterior, "escondendo-a".
fn main() {
let x = 5;
let x = x + 1; // Shadowing
{
let x = x * 2;
println!("x interno: {}", x); // 12
}
println!("x externo: {}", x); // 6
}
Visualização de Escopo e Shadowing
graph TD
A["let x = 5"] --> B["let x = x + 1 (x=6)"]
B --> C["Escopo Interno"]
subgraph "Escopo Local"
C --> D["let x = x * 2 (x=12)"]
end
D --> E["Fim do Escopo"]
E --> F["x volta ao valor externo (x=6)"]
5. Mini-Projeto: Conversor de Temperatura 🌡️
Crie um programa que faça o seguinte:
1. Declare uma constante para o fator de conversão de Celsius para Fahrenheit.
2. Use variáveis mutáveis para armazenar o valor de entrada.
3. Utilize shadowing para transformar o resultado de f64 em uma mensagem formatada String.
4. Exiba o resultado no console.
6. Exercício de Fixação 🧠
Atenção
Tentar acessar um índice fora do array causará um panic em tempo de execução, mas o Rust verificará isso para você.
- Qual a palavra-chave usada para tornar uma variável mutável?
- Explique a diferença entre uma variável imutável e uma constante.
- O que acontece com a memória quando fazemos shadowing de uma variável?
Próxima Aula: Vamos controlar o fluxo do programa com Controle de Fluxo! 🔄