Menu
Coddy logo textTech

Acceder a los valores

Parte de la sección Logic & Flow del Journey de Rust de Coddy — lección 30 de 66.

Una vez que tengas datos almacenados en tu hash map, necesitarás una forma de recuperarlos. El método .get() te permite buscar un valor utilizando su clave:

let value = my_map.get("some_key");

Sin embargo, hay un detalle importante que entender: .get() no devuelve directamente el valor. En su lugar, devuelve un tipo Option, un tipo integrado de Rust que representa "algo" o "nada". Esto se debe a que la clave que estás buscando podría no existir en el hash map.

Cuando la clave existe, .get() devuelve Some(&value); observa el símbolo &, lo que significa que obtienes una referencia al valor, no el valor en sí mismo. Cuando la clave no existe, devuelve None:

match capitals.get("France") {
    Some(capital) => println!("The capital is {}", capital),
    None => println!("Country not found"),
}

Es posible que notes que el brazo del match utiliza Some(capital) sin un & explícito. Esto se debe a que Rust maneja automáticamente la referencia por ti en este contexto — capital sigue manteniendo una referencia al valor, pero no necesitas escribir & explícitamente en el patrón. El emparejamiento de patrones de Rust es lo suficientemente inteligente como para permitirte usar capital directamente, por ejemplo al imprimirlo.

Este diseño evita que tu programa se bloquee cuando intentas acceder a una clave que no existe. En lugar de causar un error, Rust te obliga a manejar ambas posibilidades (encontrar el valor o no encontrarlo), lo que hace que tu código sea más robusto y predecible.

challenge icon

Desafío

Fácil

Recibirás dos entradas: el nombre de un país y el nombre de una ciudad capital. Crea un hash map que almacene nombres de países como claves (tipo String) y sus ciudades capitales como valores (tipo String). Inserta el país y su capital en el hash map. Luego, recibirás una tercera entrada con otro nombre de país para buscar. Usa el método .get() para recuperar la capital de este país y maneja ambos casos: cuando el país existe en el mapa y cuando no.

Nota: .get() devuelve un Option — ya sea Some(&value) (una referencia al valor) cuando la clave existe, o None cuando no existe. En un brazo de match, puedes escribir Some(capital) y Rust manejará automáticamente la referencia por ti, de modo que puedes usar capital directamente en tu sentencia de impresión.

Requisitos:

  • Importa HashMap de std::collections
  • Crea un hash map mutable con los tipos HashMap<String, String>
  • Lee la primera entrada como el nombre del país
  • Lee la segunda entrada como el nombre de la ciudad capital
  • Inserta el país y la capital en el hash map
  • Lee la tercera entrada como el país a buscar
  • Usa .get() para recuperar la capital del país buscado
  • Usa match para manejar el Option devuelto por .get()
  • Si se encuentra el país, imprime: The capital of [country] is [capital]
  • Si no se encuentra el país, imprime: [country] not found in the map

Entrada:

  • Primera línea: Nombre del país a insertar (por ejemplo, France)
  • Segunda línea: Nombre de la ciudad capital (por ejemplo, Paris)
  • Tercera línea: Nombre del país a buscar (por ejemplo, France o Germany)

Salida:

  • Si el país buscado existe: The capital of [country] is [capital]
  • Si el país buscado no existe: [country] not found in the map

Pruébalo tú mismo

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

fn main() {
    // Lee el nombre del país a insertar
    let mut country = String::new();
    io::stdin().read_line(&mut country).expect("Failed to read line");
    let country = country.trim().to_string();
    
    // Lee el nombre de la ciudad capital
    let mut capital = String::new();
    io::stdin().read_line(&mut capital).expect("Failed to read line");
    let capital = capital.trim().to_string();
    
    // Lee el nombre del país a buscar
    let mut lookup_country = String::new();
    io::stdin().read_line(&mut lookup_country).expect("Failed to read line");
    let lookup_country = lookup_country.trim().to_string();
    
    // TODO: Escribe tu código debajo
    // Crea un HashMap, inserta el país y la capital, luego busca el país
    
}
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 Logic & Flow