Collections Enums
Enums สำหรับ collection operations
Entry API
Section titled “Entry API”use std::collections::HashMap;use std::collections::hash_map::Entry;
fn main() { let mut map: HashMap<&str, i32> = HashMap::new();
// Entry enum: Occupied or Vacant match map.entry("key") { Entry::Vacant(entry) => { println!("Vacant: inserting"); entry.insert(42); } Entry::Occupied(entry) => { println!("Occupied: {}", entry.get()); } }
// or_insert - insert if vacant map.entry("a").or_insert(1); map.entry("a").or_insert(100); // Not inserted println!("a: {}", map.get("a").unwrap());
// or_insert_with - lazy insert map.entry("b").or_insert_with(|| { println!("Computing default..."); expensive_computation() });
// or_default let counts: &mut i32 = map.entry("count").or_default(); *counts += 1;
// and_modify map.entry("a") .and_modify(|v| *v += 10) .or_insert(0); println!("a after modify: {}", map.get("a").unwrap());
// Key access map.entry("key").and_modify(|v| *v *= 2); println!("key: {:?}", map.get("key"));
println!("Map: {:?}", map);}
fn expensive_computation() -> i32 { 42}เข้าสู่ระบบเพื่อดูเนื้อหาเต็ม
ยืนยันตัวตนด้วยบัญชี Google เพื่อปลดล็อกบทความทั้งหมด
Login with Google