#priority-queue #fixed-size #heap #queue #priority #storage

fixed_heap

具有手动提供的状态比较函数的固定大小堆结构

3个版本 (破坏性)

0.3.0 2024年8月3日
0.2.0 2022年11月7日
0.1.0 2022年10月31日

内存管理中的排名:720

Download history 116/week @ 2024-07-29 23/week @ 2024-08-05

每月下载量:139

MIT/Apache

43KB
680

fixed_heap

类似于BinaryHeap的Rust数据结构,除了固定大小,由数组支持,具有手动提供的可能依赖于外部数据结构的比较函数。这允许拥有一个由另一个数据结构中相关值排序的键堆。请参阅文档获取更多信息。

fixed_heap所需的最低Rust版本是1.60.0。要开始使用fixed_heap,请在您的Cargo.toml中添加以下内容:

[dependencies]
fixed_heap = "0.2"

为了获得额外的性能,在nightly上启用unstable功能:

[dependencies]
fixed_heap = { version = "0.2", features = ["unstable"] }

示例

简短示例

use fixed_heap::FixedHeap;
let mut heap: FixedHeap<i32, 16> = FixedHeap::new();
let comparer = |a: &i32, b: &i32, _: &()| a > b;
heap.pop(&comparer, &());

与另一个结构中的键

use fixed_heap::FixedHeap;
let mut heap: FixedHeap<usize, 16> = FixedHeap::new();
let comparer = |a: &usize, b: &usize, state: &[i32; 4]| state[*a] > state[*b];
let state = [1, 3, 1, 2];
heap.push(0, &comparer, &state);

安全性

此crate使用不安全代码以提高性能。它已经通过miri进行了广泛的模糊测试,以确保其行为正确。

许可证

fixed_heap根据您的选择在以下许可证下双许可:

您的贡献

除非您明确说明,否则根据Apache-2.0许可证定义的,您有意提交以包含在作品中并由您提交的任何贡献,都将根据上述内容双许可,不附加任何其他条款或条件。

无运行时依赖