Skip to content
เข้าสู่ระบบ

Collections Enums

Enums สำหรับ collection operations

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 เพื่อปลดล็อกบทความทั้งหมด