Menu
Coddy logo textTech

Acessando Valores

Parte da seção Logic & Flow do Journey de Rust da Coddy — lição 30 de 66.

Uma vez que você tenha dados armazenados em seu hash map, você precisará de uma maneira de recuperá-los. O método .get() permite que você busque um valor usando sua chave:

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

No entanto, há um detalhe importante a entender: o método .get() não retorna o valor diretamente. Em vez disso, ele retorna um tipo Option — um tipo nativo do Rust que representa "algo" ou "nada". Isso ocorre porque a chave que você está procurando pode não existir no hash map.

Quando a chave existe, .get() retorna Some(&value) - note o símbolo &, o que significa que você obtém uma referência para o valor, não o valor em si. Quando a chave não existe, ele retorna None:

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

Você pode notar que o braço do match usa Some(capital) sem um & explícito. Isso ocorre porque o Rust lida automaticamente com a referência para você neste contexto — capital ainda mantém uma referência ao valor, mas você não precisa escrever & explicitamente no padrão. A correspondência de padrões do Rust é inteligente o suficiente para permitir que você use capital diretamente, por exemplo, ao imprimi-lo.

Este design evita que seu programa trave quando você tenta acessar uma chave que não existe. Em vez de causar um erro, o Rust força você a lidar com ambas as possibilidades - encontrar o valor ou não encontrá-lo - tornando seu código mais robusto e previsível.

challenge icon

Desafio

Fácil

Você receberá duas entradas: o nome de um país e o nome de uma capital. Crie um hash map que armazene nomes de países como chaves (tipo String) e suas capitais como valores (tipo String). Insira o país e sua capital no hash map. Em seguida, você receberá uma terceira entrada com outro nome de país para pesquisar. Use o método .get() para recuperar a capital deste país e trate ambos os casos: quando o país existe no mapa e quando não existe.

Nota: .get() retorna um Option — ou Some(&value) (uma referência ao valor) quando a chave existe, ou None quando não existe. Em um braço de match, você pode escrever Some(capital) e o Rust lidará automaticamente com a referência para você, para que você possa usar capital diretamente em sua instrução de impressão.

Requisitos:

  • Importe HashMap de std::collections
  • Crie um hash map mutável com os tipos HashMap<String, String>
  • Leia a primeira entrada como o nome do país
  • Leia a segunda entrada como o nome da capital
  • Insira o país e a capital no hash map
  • Leia a terceira entrada como o país a ser pesquisado
  • Use .get() para recuperar a capital do país pesquisado
  • Use match para tratar o Option retornado por .get()
  • Se o país for encontrado, imprima: The capital of [country] is [capital]
  • Se o país não for encontrado, imprima: [country] not found in the map

Entrada:

  • Primeira linha: Nome do país para inserir (ex: France)
  • Segunda linha: Nome da capital (ex: Paris)
  • Terceira linha: Nome do país para pesquisar (ex: France ou Germany)

Saída:

  • Se o país pesquisado existir: The capital of [country] is [capital]
  • Se o país pesquisado não existir: [country] not found in the map

Experimente você mesmo

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

fn main() {
    // Lê o nome do país para inserir
    let mut country = String::new();
    io::stdin().read_line(&mut country).expect("Failed to read line");
    let country = country.trim().to_string();
    
    // Lê o nome da capital
    let mut capital = String::new();
    io::stdin().read_line(&mut capital).expect("Failed to read line");
    let capital = capital.trim().to_string();
    
    // Lê o nome do país para pesquisar
    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: Escreva seu código abaixo
    // Cria um HashMap, insere o país e a capital, e então pesquisa o país
    
}
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 Logic & Flow