📖 Scenario: Imagine you have a big box of keys and you want to find the right key quickly to open a door. Searching one by one is slow. A hash map helps you find the right key instantly by using a special code for each key.
🎯 Goal: You will create a simple Rust program that stores names and phone numbers using a hash map. You will see how it helps find a phone number quickly without searching all entries.
📋 What You'll Learn
Create a hash map called phone_book with exact entries: "Alice" with "1234", "Bob" with "5678", and "Charlie" with "91011"
Create a variable called search_name and set it to "Bob"
Use phone_book.get(&search_name) to find the phone number for search_name
Print the found phone number or "Not found" if the name is not in the phone book
💡 Why This Matters
🌍 Real World
Phone books, contact lists, and databases use hash maps to find information quickly.
💼 Career
Understanding hash maps is key for software developers to write efficient code for searching and storing data.
Progress0 / 4 steps
1
Create the phone book hash map
Create a hash map called phone_book and insert these exact entries: "Alice" with "1234", "Bob" with "5678", and "Charlie" with "91011"
DSA Rust
Hint
Use HashMap::new() to create the map and insert to add each name and number.
2
Set the search name
Create a variable called search_name and set it to "Bob"
DSA Rust
Hint
Use let search_name = "Bob"; to create the variable.
3
Find the phone number using the hash map
Use phone_book.get(&search_name) to find the phone number for search_name and store it in a variable called result
DSA Rust
Hint
Use phone_book.get(&search_name) to get the phone number.
4
Print the found phone number or "Not found"
Print the phone number stored in result if it exists, otherwise print "Not found"
DSA Rust
Hint
Use a match statement to check if result has a value and print it, else print "Not found".
Practice
(1/5)
1. Why do we use a HashMap in Rust instead of a simple list or array?
easy
A. To save memory by compressing data
B. To store values in a sorted order automatically
C. To quickly find values by keys without searching the entire collection
D. To allow duplicate keys with different values
Solution
Step 1: Understand the problem with lists/arrays
Lists require checking each item one by one to find a value, which is slow for large data.
Step 2: How HashMap solves this
HashMap uses keys to jump directly to the value, making lookup very fast.
Final Answer:
To quickly find values by keys without searching the entire collection -> Option C
Quick Check:
Fast key-based lookup = C [OK]
Hint: HashMap = fast key lookup, not ordered or duplicates [OK]
Common Mistakes:
Thinking HashMap sorts data automatically
Believing HashMap compresses data
Assuming HashMap allows duplicate keys
2. Which of the following is the correct way to create an empty HashMap in Rust?
easy
A. let map = HashMap::new();
B. let map = HashMap();
C. let map = new HashMap();
D. let map = HashMap[];
Solution
Step 1: Recall Rust syntax for creating HashMap
Rust uses ::new() method to create an empty HashMap.
Step 2: Check each option
Only HashMap::new() is valid syntax; others are incorrect.
Final Answer:
let map = HashMap::new(); -> Option A
Quick Check:
Correct Rust HashMap creation = B [OK]
Hint: Use HashMap::new() to create empty map in Rust [OK]
Common Mistakes:
Using parentheses instead of ::new()
Trying to use new keyword like other languages
Using square brackets for initialization
3. What will be the output of this Rust code?
use std::collections::HashMap;
fn main() {
let mut map = HashMap::new();
map.insert("apple", 3);
map.insert("banana", 2);
map.insert("apple", 5);
println!("{:?}", map.get("apple"));
}
medium
A. Some(3)
B. Compilation error
C. None
D. Some(5)
Solution
Step 1: Understand insert behavior in HashMap
Inserting a key that already exists updates its value to the new one.
Step 2: Trace the insertions and get
"apple" first gets 3, then updated to 5. So, map.get("apple") returns Some(5).
Final Answer:
Some(5) -> Option D
Quick Check:
Updated value returned = D [OK]
Hint: Inserting same key updates value, get returns latest [OK]
Common Mistakes:
Thinking insert adds duplicate keys
Expecting original value after update
Confusing None with Some
4. Identify the error in this Rust code using HashMap:
use std::collections::HashMap;
fn main() {
let mut map = HashMap::new();
map.insert("key1", 10);
let value = map["key2"];
println!("{}", value);
}
medium
A. HashMap::new() is not the correct way to create a map
B. Using square brackets to access a non-existent key causes panic
C. Cannot insert values into a mutable HashMap
D. Missing semicolon after insert statement
Solution
Step 1: Check how map access works
Using square brackets with a key that does not exist causes the program to panic at runtime.
Step 2: Identify the error in code
Accessing "key2" which was never inserted triggers panic, causing runtime error.
Final Answer:
Using square brackets to access a non-existent key causes panic -> Option B
Quick Check:
Non-existent key access panics = A [OK]
Hint: Square brackets panic if key missing; use get() for safe access [OK]
Common Mistakes:
Thinking HashMap::new() is wrong
Believing insert needs immutable map
Ignoring runtime panic on missing key
5. You want to count how many times each word appears in a list using a HashMap in Rust. Which approach correctly solves this problem?
hard
A. Use entry() method to update count or insert 1 if missing
B. Insert each word with value 1, then insert again with value 1 for duplicates
C. Store words in a vector and count manually later
D. Use a HashMap but clear it after each insertion
Solution
Step 1: Understand counting with HashMap
We need to increase count if word exists, or add with count 1 if new.
Step 2: Use entry() API for efficient update
The entry() method allows checking and updating count in one step safely.
Final Answer:
Use entry() method to update count or insert 1 if missing -> Option A
Quick Check:
Counting words with entry() = A [OK]
Hint: Use entry().or_insert(0) to count frequencies easily [OK]
Common Mistakes:
Inserting 1 repeatedly without updating count
Using vector instead of HashMap for counting
Clearing map after each insert
Recommended
Ready to prove it?
Pass the test and this pattern moves unknownstrongwhile earning +1 Grip toward your certificate.