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, jabki .get() ek Option return karta hai, jisse aap bina crash kiye ek missing key handle kar sakte ho.
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 tarika hai: yeh value ka ek mutable reference return karta hai, agar key pehle se waha na ho to pehle ek default insert kar deta hai. contains_key bina kisi Option ko handle kiye 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
Yahi 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 next step hai practice — ek chhota program pick karo aur use banao, compiler ke error messages par depend karte hue, jo industry ke best messages mein se hain, aapko guide karne ke liye.
Practice Exercise
ages naam ka ek HashMap<&str, i32> banao. "Alice" -> 30 aur "Bob" -> 25 insert karo. ages["Alice"] print karo.