3个不稳定版本

0.2.1 2022年6月24日
0.2.0 2022年6月24日
0.1.0 2022年6月19日

#2064数据结构

自定义许可

59KB
953

周期性:格上的数据结构

periodic logo

格的对偶空间是 周期性的,这意味着它是有限的,并且达到这些边界后,会回到起点。一个典型的(非平凡)周期性空间的例子是球体:选择一个方向并直行:你将始终回到起点。

这个类比旨在描述这个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

无运行时依赖