#alloc #vec #no-std #preserve

no-std allocvec

一个保留每个插入元素索引的向量类型

1个不稳定版本

0.1.0 2024年7月4日

419嵌入式开发

MIT 许可证

18KB
357

AllocVec

一个向量,其中每个推入的元素都保证在它被移除之前保持其索引。

内部使用一个普通的 Vec 和一个链表来快速分配和释放。

支持预留空间并在以后用元素填充。

示例

use allocvec::AllocVec;

let mut vec = AllocVec::new();
let idx1 = vec.allocate(4);
let idx2 = vec.allocate(8);
let idx3 = vec.allocate(15);

vec.deallocate(idx1);
vec.deallocate(idx3);

assert_eq!(Some(8), vec.get(idx2));

速度

尽管我没有对实现效率进行基准测试,但 分配释放索引 操作都是 O(1),而计算向量的长度是 O(n)

迭代器需要过滤向量中的未分配和空槽,因此这可能会对分支预测产生不利影响。

无运行时依赖