3个不稳定版本
0.2.1 | 2022年6月24日 |
---|---|
0.2.0 | 2022年6月24日 |
0.1.0 | 2022年6月19日 |
#2064 在 数据结构
59KB
953 行
周期性:格上的数据结构
格的对偶空间是 周期性的,这意味着它是有限的,并且达到这些边界后,会回到起点。一个典型的(非平凡)周期性空间的例子是球体:选择一个方向并直行:你将始终回到起点。
这个类比旨在描述这个crate是如何构思的以及它所服务的目的:它提供了两个模块,ring
,该模块暴露了周期性Vec-like结构体的实现,以及map
,该模块提供了一个HashMap-like结构体,当达到一定容量后,它会覆盖其键值对。
什么?
如果您想在项目中使用这个库,您可以将以下内容添加到您的cargo依赖项中
periodic-rs = "0.2.1"
为什么?
这些结构有什么用?它们的主要用途是拥有占用固定数量内存插槽的缓存,因此消耗的内存量有限,但这是一个非常简单的缓存:先进先出覆盖。
当然,作者创建这个作品的真正原因是学习一些Rust。
如何?
这个包最简单的API如下
use periodic::map::RingDict;
// 3 is the total capacity
let mut rd: RingDict<&str, i32> = RingDict::new(3);
rd.insert("a", 1);
rd.insert("b", 2);
rd.insert("c", 3);
assert_eq!(rd.get("a"), Some(&1));
assert_eq!(rd.get("b"), Some(&2));
assert_eq!(rd.get("c"), Some(&3));
// Now we add a new key-value pair, overcoming the capacity
rd.insert("d", 4);
assert_eq!(rd.get("d"), Some(&4));
assert!(rd.get("a").is_none());
联系信息
您可以通过以下邮箱联系作者
blallo -|AT|- autistici -dot- org