9 个版本 (稳定)

1.0.5 2023年11月6日
1.0.4 2023年10月31日
1.0.2 2023年5月8日
1.0.0 2022年3月22日
0.1.1 2022年1月4日

#406 in 数据结构

每月45次下载

MIT 许可证

11KB
248

Hotel

将数据与唯一键关联的简单集合数据结构。

属性和优势

键的类型为 usize,因此可以以较低的成本传递,而不是实际数据。

优势在于 keys 可以以非常低廉的成本克隆,并且永远不需要对键进行哈希处理。这也意味着永远不会发生冲突。

putremovegettake 都是 O(1) 操作。

HotelVec 支持,并且非常 内存高效。正因为如此,它通过继承 Vec 的缓存友好性,在现代 CPU 上非常高效。

用例

以下是示例

  • 通常与 Maps 一起使用,以避免经常哈希和克隆键。
  • 在某些情况下可以用作高性能的 HashMap 替代品。
  • 实现图!图可以有很多形式,以某种方式几乎可以在每个程序中找到。树很简单,其他所有内容在 Rust 中实现起来都不太明显,这要归功于它的所有权规则。一个 Hotel 是存储节点所有权和管理边作为键的完美地方。

示例

这是一个简单的图。A -> B -> C

let mut nodes: Hotel<Node>,
let mut edges: Vec<(usize, usize)>

let key1 = nodes.put(Node::new(a));
let key2 = nodes.put(Node::new(b));
let key3 = nodes.put(Node::new(c));
edges.push( (key1, key2) );
edges.push( (key2, key3) );

HotelMap

此外,这个包还包含 HotelMap 数据结构。它是将键映射到简单 usize 值的简写,并且能够用这两种方式索引。这可以具有使用可复制的和小的 usize 的优势,而不是始终携带复杂和大的键。

无运行时依赖