1个不稳定版本
0.1.0 | 2023年11月11日 |
---|
#1281 in 数据结构
7KB
entry_put_ext
put操作的Map条目扩展。
该包的作者英语不是很好。
如果文档难以阅读,请见谅。
这是什么?
此包通过添加put
方法扩展了映射(HashMap
和BTreeMap
)中entry
方法的返回类型。这些put
方法是为设置条目值并获取对其引用而设计的辅助方法。这使得设置和获取的常见代码稍微缩短了一些。
use std::collections::HashMap;
use entry_put_ext::hash_map::EntryPutExt;
let mut map = HashMap::from([("X", false)]);
let x = *map.entry("X").put(true);
let y = *map.entry("Y").put(true);
assert_eq!(x, map["X"]);
assert_eq!(y, map["Y"]);
其他选项
没有这个包。
insert
和get
(简单,但有点慢,不是一行代码)。
use std::collections::HashMap;
let mut map = HashMap::from([("X", false)]);
map.insert("X", true);
map.insert("Y", true);
let x = *map.get("X").unwrap();
let y = *map.get("Y").unwrap();
assert_eq!(x, map["X"]);
assert_eq!(y, map["Y"]);
and_modify
和or_insert
(需要值类型的Copy
特质)。
use std::collections::HashMap;
let mut map = HashMap::from([("X", false)]);
let (xv, yv) = (true, true);
let x = *map.entry("X").and_modify(|x| *x = xv).or_insert(xv);
let y = *map.entry("Y").and_modify(|x| *x = yv).or_insert(yv);
assert_eq!(x, map["X"]);
assert_eq!(y, map["Y"]);