Pular para o conteúdo principal
Módulo 1 · Lição 2 de 22/14 no curso~10 min
Lições do módulo (2/2)

Tipos Primitivos

Rust é uma linguagem de tipagem estática, o que significa que ela deve conhecer o tipo de todas as variáveis ​​em tempo de compilação. Normalmente, o compilador pode inferir o tipo com base no valor atribuído, mas às vezes é necessário ou útil especificá-lo manualmente.

Os tipos primitivos em Rust são divididos em duas categorias principais: escalares (valor único) e compostos (grupo de valores).

Tipos escalares

Os tipos escalares representam um único valor. Rust tem quatro tipos escalares fundamentais:

  1. Inteiros: números inteiros. Eles podem ser assinados (i8, i16, i32, i64, i128, isize) ou não assinados (u8, u16, u32, u64, u128, usize). O tipo padrão é i32.
  2. Ponto flutuante: Números com casas decimais. Eles podem ser f32 ou f64 (precisão dupla, padrão).
  3. Booleanos: Representa a verdade lógica com true ou false (tipo bool).
  4. Caracteres: um único valor escalar Unicode entre aspas simples (tipo char), por exemplo, 'a', 'ℤ' ou emoji '😻'.

Exemplo de anotação de tipo explícita:

Rust
let x: i64 = 42;
let y: f64 = 3.1415;
let is_rust_awesome: bool = true;
let heart_emoji: char = '❤';

Tipos compostos

Os tipos compostos podem agrupar vários valores em um único tipo. Rust tem dois tipos principais de compostos primitivos:

Tuplas

Uma tupla agrupa valores de diferentes tipos em uma coleção de tamanho fixo:

Rust
let person: (String, i32) = (String::from("Alice"), 30);

// Destructuring to extract values
let (name, age) = person;

// Direct access with index using dot (.)
let name_direct = person.0;
let age_direct = person.1;

Matrizes (listas de tamanho fixo)

Um array agrupa vários elementos do mesmo tipo em uma coleção de tamanho fixo armazenada na pilha:

Rust
let numbers = [1, 2, 3, 4, 5]; // Inferred as [i32; 5]
let first = numbers[0]; // Access by index
let third = numbers[2];

Se você tentar acessar um índice fora dos limites do array (por exemplo, numbers[10]), o Rust irá travar imediatamente (pânico) em tempo de execução, em vez de permitir acesso não autorizado à memória.

Comparação

RecursoTuplaMatriz
Tipos de elementosPode ser diferenteDeve ser o mesmo
TamanhoFixoFixo
AcessoÍndice via ponto (por exemplo, .0)Colchetes (por exemplo, [0])

Experimente você mesmo

Exercício#rust.m1.l2.e1
Tentativas: 0Carregando…

Declare uma tupla chamada stats contendo a idade 30 (inteiro) e a pontuação 95,5 (flutuante). A seguir, imprima a pontuação na tela acessando diretamente o segundo elemento da tupla usando seu índice.

Carregando editor…
Mostrar dica

Crie a tupla com `let stats = (30, 95.5);`. Acesse o segundo elemento usando `stats.1` dentro da macro `println!`.

Solução disponível após 3 tentativas

Exercício#rust.m1.l2.e2
Tentativas: 0Carregando…

Declare um array chamado numbers contendo os valores inteiros de 1 a 5. Imprima o terceiro elemento do array (índice 2) na tela usando println!.

Carregando editor…
Mostrar dica

Declare o array com `let numbers = [1, 2, 3, 4, 5];` e acesse o terceiro elemento indexando-o com `[2]`.

Solução disponível após 3 tentativas

Exercício#rust.m1.l2.e3
Tentativas: 0Carregando…

Dada a tupla `let point = (10, 20);`, use a desestruturação para extrair os valores em duas variáveis ​​​​chamadas `x` e `y`. Em seguida, imprima a soma de `x` e `y`.

Carregando editor…
Mostrar dica

Use a sintaxe `let (x, y) = point;` para desestruturar a tupla e então some as variáveis ​​em `println!`.

Solução disponível após 3 tentativas