🎯 Tipos de Dados em Rust
Em poucas palavras
Rust é uma linguagem estaticamente tipada, o que significa que o compilador deve conhecer o tipo de todas as variáveis em tempo de compilação. Os tipos são divididos em duas categorias principais: Escalares (um único valor) e Compostos (múltiplos valores agrupados).
📝 Notas e Desenvolvimento
1. Tipos Escalares
Representam um único valor atômico.
A. Inteiros
Números sem casas decimais. O padrão é i32.
| Comprimento | Com Sinal | Sem Sinal |
|---|---|---|
| 8-bit | i8 | u8 |
| 16-bit | i16 | u16 |
| 32-bit | i32 | u32 |
| 64-bit | i64 | u64 |
| 128-bit | i128 | u128 |
| arch (arquitetura) | isize | usize |
Estouro de Inteiro (Overflow)
- Em Debug: O programa causa um panic.
- Em Release: Ocorre o wrapping (ex: em
u8, 256 vira 0).
B. Ponto Flutuante
Números com casas decimais. O padrão é f64.
f32: Precisão simples.f64: Precisão dupla (mais comum e performático em CPUs modernas).
C. Booleano e Caractere
bool: Possui 1 byte de tamanho. Valores:trueoufalse.char: Possui 4 bytes. Representa um valor escalar Unicode (suporta emojis e caracteres especiais).
2. Tipos Compostos
Agrupam múltiplos valores em um único tipo.
A. Tuplas
Tamanho fixo, mas podem conter tipos diferentes.
- Acesso: Via desestruturação ou índice (ex:
tup.0). - Tipo Unitário: Uma tupla vazia
()representa a ausência de valor.
let tup: (i32, f64, u8) = (500, 6.4, 1);
let (x, y, z) = tup; // DesestruturaçãoB. Arrays (Matrizes)
Tamanho fixo e todos os elementos devem ser do mesmo tipo.
- Alocação: São alocados na Stack (pilha).
- Segurança: Rust verifica os limites em tempo de execução para evitar acessos inválidos.
let a: [i32; 5] = [1, 2, 3, 4, 5];
let primeiro = a[0];3. Exemplos Práticos
fn main() {
// Literais Numéricos
let decimal = 98_222;
let hex = 0xff;
let byte = b'A'; // u8 apenas
// Strings (Fatias vs Mutáveis)
let slice: &str = "Estático";
let mut dinamica: String = String::from("Dinâmico");
// Array com valor repetido
let repetido = [3; 5]; // [3, 3, 3, 3, 3]
}🔗 Conexões e Contexto
- Atlas: MdC - Programação
- Notas Relacionadas: