#entry #map #extension

entry_put_ext

put操作的Map条目扩展

1个不稳定版本

0.1.0 2023年11月11日

#1281 in 数据结构

MIT/Apache

7KB

entry_put_ext

put操作的Map条目扩展。

该包的作者英语不是很好。
如果文档难以阅读,请见谅。

这是什么?

此包通过添加put方法扩展了映射(HashMapBTreeMap)中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"]);

其他选项

没有这个包。

insertget(简单,但有点慢,不是一行代码)。

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_modifyor_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"]);

没有运行时依赖