Rullst AcademyRullst Academy/Lição
Rust II: dados, escolhas e confiança · Lição 06 / 12

Coleções sem adivinhar índices

Uma prateleira cresce e encolhe. Consultar uma posição inexistente deve ser uma possibilidade tratada.

Trilhas de aprendizado12 min

Vamos descobrir juntos

  1. 1

    Vec<T> guarda uma sequência de elementos do mesmo tipo e pode crescer com push. O primeiro índice é 0; len() informa quantos elementos existem, não o último índice.

  2. 2

    get(index) retorna Option<&T>: Some com uma referência se a posição existir, None se faltar. Já items[index] pode causar panic quando a posição não existe.

  3. 3

    Uma função que só precisa ler uma sequência pode aceitar &[u16], uma fatia emprestada. Ela serve para consultar um Vec ou um array sem copiar todos os elementos.

  4. 4

    Some(0) e None não significam a mesma coisa: um valor zero existe; ausência significa que não encontramos o valor. Evite usar zero como substituto silencioso quando essa diferença importa.

DA LIÇÃO PARA A PRÁTICA

Guia para acompanhar no seu ritmo

Leia os passos antes de usar a referência abaixo. Comandos são executados no terminal do sistema indicado; o cadastro acontece no site oficial. Os exercícios da Rullst Academy são treino e não verificam sua instalação ou conta externa.

fn inspect(items: &[u16], index: usize) { println!("{:?}", items.get(index)); }
fn main() {
    let mut items = vec![3];
    items.push(0);
    inspect(&items, 1);
}

Links oficiais e próximo passo

✦
SUA MISSÃO

Usar Vec, fatias &[T], get e Option com Some/None.

Agora é a sua vez

Oficina de descobertas

Leia, preveja, investigue

Preveja antes de mostrar. Este painel revela resultados preparados, não compila seu código. Erros de compilação são resumidos; o texto exato pode variar com a versão do compilador.
Mini experimento

Simulação didática: compare os cartões e confira suas previsões. O navegador não está compilando Rust nem iniciando um servidor.

fn inspect(items: &[u16], index: usize) { println!("{:?}", items.get(index)); }
fn main() {
    let mut items = vec![3];
    items.push(0);
    inspect(&items, 1);
}
Monte suas respostas e confira quando estiver pronto.
Uma pausa para entender

Por que Some(0) difere de None?

Preciso de uma pista

Option representa presença ou ausência, não apenas um número.

Carregando sua jornada…

Leve com você

Teste índices 0, 2 e 3 após push(7). Depois passe uma lista vazia. Escreva uma mensagem diferente para ausência e para quantidade zero.

RUST II · .rs

Sua bancada Rust II

Leia, preveja e responda aqui. Para compilar de verdade, extraia o ZIP da atividade em uma pasta nova, abra o terminal ao lado de Cargo.toml e use os comandos abaixo. Rust e as ferramentas do seu sistema precisam estar instalados.

cargo check --offline
cargo test --offline
cargo run --offline
Meus arquivos e GitHub

O editor abaixo salva um rascunho neste navegador e permite baixar ou publicar seu .rs. Para executá-lo no projeto, salve o arquivo editado como src/main.rs. O ZIP contém a versão inicial; os resultados preparados não mudam com suas edições. A avaliação online não comprova execução local.

No seu ritmo

Meus arquivos e GitHub

Toda lição pode virar um registro seu: código, anotações ou um plano de prática. Guardar um arquivo no GitHub é opcional e não altera seu XP.

Manual do aluno

O editor e os downloads abrem quando esta lição estiver liberada para sua conta. Confira o acesso abaixo ou volte ao mapa da trilha.

Conferindo seu acesso à lição…

Rullstpetbot

A IA pode errar. Confira no material da lição.