Capítulo 05: Vetores (Vec) 🦸‍♂️🛡️

Neste capítulo, vamos aprender a armazenar vários valores em uma única variável usando os Vetores dinâmicos do Rust, com o tema Os Vingadores (Marvel)!


📖 O que são Vetores em Rust?

No Rust, temos os arrays normais (com tamanho fixo) e os Vec (vetores dinâmicos). O Vec permite adicionar e remover itens à vontade, crescendo de tamanho automaticamente, igual ao std::vector do C++!


📖 Exemplo Guiado: Poder dos Vingadores

Vamos criar um vetor para armazenar o nível de poder de 4 Vingadores e calcular a média de poder da equipe.

  1. Crie o arquivo poder_equipe.rs na pasta src/:
fn main() {
    // Criando um vetor dinâmico usando a macro vec!
    let poderes = vec![85, 90, 95, 100];
    let mut soma = 0;
 
    // Acessando os itens pelo índice
    println!("Poder do Homem de Ferro: {}", poderes[0]);
    println!("Poder do Capitao America: {}", poderes[1]);
    println!("Poder do Thor: {}", poderes[2]);
    println!("Poder do Hulk: {}", poderes[3]);
 
    // Calculando a média usando um laço for
    for poder in &poderes {
        soma += poder;
    }
 
    // Convertendo para float para calcular a média
    let media = soma as f32 / poderes.len() as f32;
    
    println!("\nMedia de poder da equipe: {:.2}", media);
}

🕹️ Como Executar e Testar no VS Code

  1. Abra o terminal integrado.
  2. Compile: rustc poder_equipe.rs
  3. Execute: ./poder_equipe

Resultado Esperado:

Poder do Homem de Ferro: 85
Poder do Capitao America: 90
Poder do Thor: 95
Poder do Hulk: 100
 
Media de poder da equipe: 92.50

📊 Ilustração Visual: Vetor na Memória

O Vec armazena os dados na memória Heap e pode crescer:

graph LR
    subgraph "Vetor: poderes"
    A["Índice 0: 85"]
    B["Índice 1: 90"]
    C["Índice 2: 95"]
    D["Índice 3: 100"]
    end

🛠️ Prática Obrigatória 1: Inventário de Itens

Crie um programa chamado inventario.rs que comece com um vetor vazio de strings. Adicione 3 itens ao inventário (ex: “Poção”, “Espada”, “Escudo”) usando o método .push() e depois exiba todos os itens usando um laço for.


🔑 Gabarito de Código

Prática 1: inventario.rs

fn main() {
    // Precisamos de mut para adicionar itens!
    let mut inventario = Vec::new();
 
    inventario.push("Pocao");
    inventario.push("Espada");
    inventario.push("Escudo");
 
    println!("--- Seu Inventario ---");
    for item in &inventario {
        println!("- {}", item);
    }
}

Capitulo Anterior | Proximo Capitulo