Collections aur Standard Library
HashMap<K, V> key-value pairs store karta hai, bilkul Python ke dictionary ya JavaScript ke object ki tarah — lekin key aur value dono types pehle se fixed hone ke sath. [] se indexing karna panic karta hai agar key missing ho, jabke .get() ek Option wapas karta hai, jisse aap baghair crash kiye ek missing key handle kar sakte hain.
use std::collections::HashMap;
fn main() {
let mut scores: HashMap<String, i32> = HashMap::new();
scores.insert(String::from("Alice"), 95);
scores.insert(String::from("Bob"), 87);
println!("{}", scores["Alice"]);
if let Some(score) = scores.get("Bob") {
println!("Bob: {}", score);
}
}95 Bob: 87
entry API
entry().or_insert(), Rust ka ek hi step mein update-ya-insert karne ka idiomatic tareeqa hai: yeh value ka ek mutable reference wapas karta hai, agar key pehle se wahan na ho to pehle ek default insert kar deta hai. contains_key kisi Option ko handle kiye baghair ek key ki presence check kar leta hai.
use std::collections::HashMap;
fn main() {
let mut inventory: HashMap<&str, i32> = HashMap::new();
inventory.insert("apples", 10);
inventory.insert("bananas", 5);
*inventory.entry("apples").or_insert(0) += 3;
println!("apples: {}", inventory["apples"]);
println!("has oranges: {}", inventory.contains_key("oranges"));
}apples: 13 has oranges: false
Yehi Rust ki foundation hai: ownership, borrowing, aur ek type system jo bugs ki poori categories ko runtime surprises ke bajaye compile errors mein badal deta hai. Yahan se, best agla qadam hai mashq — ek chhota program chuno aur use banao, compiler ke error messages par inhisar karte hue, jo industry ke behtareen messages mein se hain, aapko guide karne ke liye.
Practice Exercise
ages naam ka ek HashMap<&str, i32> banayein. "Alice" -> 30 aur "Bob" -> 25 insert karein. ages["Alice"] print karein.