Menu
Coddy logo textTech

Insertar pares clave-valor

Parte de la sección Lógica y Flujo del Journey de Rust de Coddy. Lección 29 de 66.

Ahora que tienes un mapa hash vacío, es hora de agregarle algunos datos. Puedes insertar pares clave-valor en un mapa hash mediante el método .insert():

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

El método .insert() acepta dos parámetros: la clave y el valor. En este ejemplo, almacenamos nombres de países como claves y sus ciudades capitales como valores.

Hay un comportamiento importante que debes recordar: si insertas una clave que ya existe en el mapa hash, el nuevo valor sobrescribirá el anterior:

capitals.insert("France", "Lyon");  // Esto sobrescribe "Paris"

Después de esta operación, buscar "France" devolvería "Lyon" en lugar de "Paris". Este comportamiento de sobrescritura hace que .insert() sea útil tanto para añadir nuevas entradas como para actualizar las existentes en tu mapa hash.

challenge icon

Desafío

Fácil

Recibirás tres entradas: el nombre de un producto, su precio (como número decimal) y el nombre de otro producto. Crea un mapa hash mutable para almacenar los nombres de los productos como claves (tipo String) y sus precios como valores (tipo f64). Inserta el primer producto con su precio en el mapa hash. Después, inserta el segundo producto con un precio de 0.0. Finalmente, actualiza el precio del segundo producto a 15.99 insertándolo nuevamente con el nuevo precio. Imprime toda la información en el formato exacto que se muestra a continuación.

Nota sobre .clone(): Al insertar una variable String como clave en un HashMap, las reglas de propiedad de Rust implican que la variable se movería al mapa y ya no podría utilizarse después. Para seguir utilizando la variable (por ejemplo, para imprimirla o insertarla de nuevo), llama a .clone() sobre ella al pasarla a insert(). Por ejemplo: map.insert(name.clone(), price).

Requisitos:

  • Importa HashMap desde std::collections
  • Crea un mapa hash mutable con los tipos HashMap<String, f64>
  • Lee la primera entrada como el nombre del primer producto
  • Lee la segunda entrada y conviértela a f64 para obtener el precio del primer producto
  • Inserta el primer producto y su precio en el mapa hash usando .clone() en el nombre del producto
  • Lee la tercera entrada como el nombre del segundo producto
  • Inserta el segundo producto con un precio de 0.0 usando .clone() en el nombre del producto
  • Inserta nuevamente el segundo producto con un precio de 15.99 usando .clone() (esto sobrescribirá el valor anterior)
  • Imprime la información de ambos productos en el formato exacto que se muestra a continuación

Entrada:

  • Primera línea: nombre del primer producto (por ejemplo, Laptop)
  • Segunda línea: precio del primer producto como número decimal (por ejemplo, 999.99)
  • Tercera línea: nombre del segundo producto (por ejemplo, Mouse)

Salida:

  • Primera línea: Inserted [first_product] at $[price]
  • Segunda línea: Inserted [second_product] at $0.00
  • Tercera línea: Updated [second_product] to $15.99

Pruébalo tú mismo

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

fn main() {
    // Leer 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: Escribe tu código debajo
    // Crea un HashMap mutable, inserta los productos e imprime la salida requerida
    
}
quiz iconPonte a prueba

Esta lección incluye un breve cuestionario. Empieza la lección para responderlo y registrar tu progreso.

Todas las lecciones de Lógica y Flujo

Practica por tu cuenta: Compilador de Rust online