Acessando Elementos do Vetor
Parte da seção Logic & Flow do Journey de Rust da Coddy — lição 10 de 66.
Depois de ter um vetor com elementos, você precisará acessar valores individuais. Rust oferece duas abordagens diferentes para obter elementos de um vetor, cada uma com suas próprias compensações entre conveniência e segurança.
O primeiro método usa sintaxe de índice com colchetes, semelhante a arrays:
let numbers = vec![10, 20, 30, 40];
let first = numbers[0]; // obtém 10
let third = numbers[2]; // obtém 30Embora essa sintaxe seja familiar e concisa, ela possui um risco significativo: se você tentar acessar um índice que não existe, seu programa entrará em pânico (panic) e travará:
let numbers = vec![10, 20, 30];
let invalid = numbers[5]; // Isso causará um pânico!O segundo método usa o método .get(), que fornece acesso seguro:
let numbers = vec![10, 20, 30, 40];
let first = numbers.get(0); // retorna Some(10)
let invalid = numbers.get(5); // retorna NoneO método .get() retorna um Option - seja Some(value) se o índice existir, ou None se não existir. Isso força você a lidar com a possibilidade de que o elemento possa não existir, prevenindo falhas e tornando seu código mais robusto.
Desafio
FácilEscreva uma função get_element_at que recebe um vetor numbers e um índice idx, e retorna o elemento naquele índice usando acesso seguro.
Use o método .get() para acessar o elemento de forma segura. Se o índice existir, retorne o valor. Se o índice não existir, retorne -1 como um valor padrão.
Parâmetros:
numbers(Vec<i32>): O vetor para acessaridx(i32): O índice para recuperar
Retorna: O elemento no índice fornecido, ou -1 se o índice não existir (i32)
Folha de consulta
Rust fornece dois métodos para acessar elementos de um vetor:
Sintaxe de índice com colchetes:
let numbers = vec![10, 20, 30, 40];
let first = numbers[0]; // obtém 10
let third = numbers[2]; // obtém 30Este método causará um panic se o índice não existir:
let invalid = numbers[5]; // Isso causará um panic!O método .get() para acesso seguro:
let numbers = vec![10, 20, 30, 40];
let first = numbers.get(0); // retorna Some(10)
let invalid = numbers.get(5); // retorna NoneO método .get() retorna um tipo Option - ou Some(value) se o índice existir, ou None se não existir. Isso evita falhas e exige o tratamento explícito de elementos ausentes.
Experimente você mesmo
fn get_element_at(numbers: Vec<i32>, idx: i32) -> i32 {
// Escreva o código aqui
}
Esta lição inclui um quiz rápido. Comece a lição para respondê-lo e acompanhar seu progresso.
Todas as lições de Logic & Flow
1Fluxo de Controle Avançado
A Expressão 'match'Correspondência de Múltiplos ValoresCorrespondência de IntervalosA Expressão 'if let'Loops como ExpressõesRecapitulação - Parser de Comandos Simples4Agrupando Dados com Structs
O que é uma Struct?Visão Geral de StructsAcessando Campos de uma StructStructs MutáveisStructs como Parâmetros de FunçãoTuple StructsRecapitulação - Criando uma Struct Book2Introdução a Vetores
O que é um Vetor?Criando um VetorAdicionando Elementos com pushAcessando Elementos do VetorIterando sobre um VetorIteração MutávelRemovendo ElementosRecapitulação - Rastreador de Pontuação Básico5Pares Chave-Valor com Hash Maps
O que é um Hash Map?Criando um Hash MapInserindo Pares Chave-ValorAcessando ValoresIterando sobre um Hash MapAtualizando um ValorRemovendo um ParRecapitulação - Contador de Palavras8Projeto: Inventário Simples de Itens
Configuração do ProjetoAdicionando um ItemVerificando o EstoqueVendendo um ItemJuntando tudo3Lista de Tarefas via Linha de Comando
Configuração do ProjetoAdicionando uma TarefaVisualizando Todas as TarefasRemovendo uma TarefaCódigo Final