Menu
Coddy logo textTech

Inserindo Pares Chave-Valor

Parte da seção Lógica & Fluxo do Journey de Rust da Coddy. Lição 29 de 66.

Agora que você tem um mapa hash vazio, é hora de adicionar alguns dados a ele. Você pode inserir pares de chave-valor em um mapa hash usando o método .insert():

let mut capitals = HashMap::new();
capitals.insert("France", "Paris");
capitals.insert("Japan", "Tokyo");

O método .insert() recebe dois parâmetros: a chave e o valor. Neste exemplo, estamos armazenando nomes de países como chaves e suas cidades capitais como valores.

Há um comportamento importante a ser lembrado: se você inserir uma chave que já existe no mapa hash, o novo valor substituirá o antigo:

capitals.insert("France", "Lyon");  // Isso sobrescreve "Paris"

Após essa operação, consultar "France" retornaria "Lyon" em vez de "Paris". Esse comportamento de sobrescrita torna .insert() útil tanto para adicionar novas entradas quanto para atualizar as existentes no seu mapa hash.

challenge icon

Desafio

Fácil

Você receberá três entradas: o nome de um produto, seu preço (como um número decimal) e o nome de outro produto. Crie um mapa hash mutável para armazenar os nomes dos produtos como chaves (tipo String) e seus preços como valores (tipo f64). Insira o primeiro produto com seu preço no mapa hash. Em seguida, insira o segundo produto com um preço de 0.0. Por fim, atualize o preço do segundo produto para 15.99, inserindo-o novamente com o novo preço. Imprima todas as informações no formato exato mostrado abaixo.

Observação sobre .clone(): Ao inserir uma variável String como chave em um HashMap, as regras de propriedade do Rust fazem com que a variável seja movida para o mapa e não possa mais ser usada posteriormente. Para continuar usando a variável (por exemplo, para imprimi-la ou inseri-la novamente), chame .clone() nela ao passá-la para insert(). Por exemplo: map.insert(name.clone(), price).

Requisitos:

  • Importe HashMap de std::collections
  • Crie um mapa hash mutável com os tipos HashMap<String, f64>
  • Leia a primeira entrada como o nome do primeiro produto
  • Leia a segunda entrada e converta-a para f64 para obter o preço do primeiro produto
  • Insira o primeiro produto e seu preço no mapa hash usando .clone() no nome do produto
  • Leia a terceira entrada como o nome do segundo produto
  • Insira o segundo produto com um preço de 0.0 usando .clone() no nome do produto
  • Insira o segundo produto novamente com um preço de 15.99 usando .clone() (isso substituirá o valor anterior)
  • Imprima as informações dos dois produtos no formato exato mostrado abaixo

Entrada:

  • Primeira linha: nome do primeiro produto (por exemplo, Laptop)
  • Segunda linha: preço do primeiro produto como um número decimal (por exemplo, 999.99)
  • Terceira linha: nome do segundo produto (por exemplo, Mouse)

Saída:

  • Primeira linha: Inserted [first_product] at $[price]
  • Segunda linha: Inserted [second_product] at $0.00
  • Terceira linha: Updated [second_product] to $15.99

Experimente você mesmo

use std::collections::HashMap;
use std::io;

fn main() {
    // Ler entradas
    let mut product1 = String::new();
    io::stdin().read_line(&mut product1).expect("Failed to read line");
    let product1 = product1.trim().to_string();
    
    let mut price1_input = String::new();
    io::stdin().read_line(&mut price1_input).expect("Failed to read line");
    let price1: f64 = price1_input.trim().parse().expect("Failed to parse price");
    
    let mut product2 = String::new();
    io::stdin().read_line(&mut product2).expect("Failed to read line");
    let product2 = product2.trim().to_string();
    
    // TODO: Escreva seu código abaixo
    // Crie um HashMap mutável, insira os produtos e imprima a saída necessária
    
}
quiz iconTeste seus conhecimentos

Esta lição inclui um quiz rápido. Comece a lição para respondê-lo e acompanhar seu progresso.

Todas as lições de Lógica & Fluxo

Pratique por conta própria: Compilador de Rust online