Removendo Elementos
Parte da seção Logic & Flow do Journey de Rust da Coddy — lição 13 de 66.
Às vezes você precisa remover elementos de um vetor, não apenas adicioná-los. Rust fornece dois métodos principais para remover elementos, cada um projetado para diferentes situações.
O método .pop() remove e retorna o último elemento do vetor:
let mut numbers = vec![10, 20, 30, 40];
let last = numbers.pop(); // remove 40, retorna Some(40)
// numbers agora é [10, 20, 30]Observe que .pop() retorna um Option - ele fornece Some(value) se houver um elemento para remover, ou None se o vetor já estiver vazio. Isso torna seu uso seguro mesmo em vetores vazios.
O método .remove() remove um elemento em um índice específico e retorna esse elemento:
let mut fruits = vec!["apple", "banana", "cherry"];
let removed = fruits.remove(1); // remove "banana"
// fruits agora é ["apple", "cherry"]Quando você usa .remove(), todos os elementos após o índice removido se deslocam para a esquerda para preencher a lacuna. Esta operação pode ser mais lenta para vetores grandes ao remover do início ou do meio, já que muitos elementos precisam ser movidos.
Ambos os métodos exigem que o vetor seja mutável, pois modificam seu conteúdo. Escolha .pop() quando quiser remover do final e .remove() quando precisar remover de uma posição específica.
Desafio
FácilVocê receberá duas entradas: primeiro, uma lista de números separados por vírgula e, segundo, um índice para remover. Leia ambas as entradas, crie um vetor a partir dos números, remova o elemento no índice especificado e imprima os elementos restantes em linhas separadas.
Requisitos:
- Leia a primeira entrada contendo números separados por vírgula (ex:
10,20,30,40,50) - Divida a string por vírgulas e converta cada número em um número inteiro
- Crie um vetor mutável a partir desses números
- Leia a segunda entrada e converta-a em um número inteiro representando o índice
- Use
.remove()para remover o elemento naquele índice - Imprima cada elemento restante em uma linha separada
Entrada:
- Primeira linha: Inteiros separados por vírgula (ex:
10,20,30,40,50) - Segunda linha: Um número inteiro representando o índice a ser removido
Saída: Imprima cada elemento restante do vetor em uma linha separada
Folha de consulta
Rust fornece dois métodos principais para remover elementos de vetores:
O método .pop() remove e retorna o último elemento:
let mut numbers = vec![10, 20, 30, 40];
let last = numbers.pop(); // removes 40, returns Some(40)
// numbers is now [10, 20, 30].pop() retorna um tipo Option - Some(value) se um elemento foi removido, ou None se o vetor estava vazio.
O método .remove() remove um elemento em um índice específico e o retorna:
let mut fruits = vec!["apple", "banana", "cherry"];
let removed = fruits.remove(1); // removes "banana"
// fruits is now ["apple", "cherry"]Ao usar .remove(), todos os elementos após o índice removido são deslocados para a esquerda para preencher a lacuna.
Ambos os métodos exigem que o vetor seja mutável. Use .pop() para remover do final e .remove() para remover de uma posição específica.
Experimente você mesmo
use std::io;
fn main() {
// Leia os números separados por vírgula
let mut numbers_input = String::new();
io::stdin().read_line(&mut numbers_input).expect("Failed to read line");
// Leia o índice a ser removido
let mut index_input = String::new();
io::stdin().read_line(&mut index_input).expect("Failed to read line");
// TODO: Escreva seu código abaixo
// 1. Divida o numbers_input por vírgulas e converta para inteiros
// 2. Crie um vetor mutável a partir desses números
// 3. Converta index_input para um inteiro
// 4. Remova o elemento no índice especificado
// 5. Imprima cada elemento restante em uma linha separada
}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