#arena #area #zone #memory-context

竞技场

用于高效添加和删除具有稳定ID项目的简单竞技场数据结构

3个不稳定版本

0.2.0 2022年12月21日
0.1.1 2022年12月19日
0.1.0 2022年12月19日

#1681 in 数据结构

MIT/Apache

14KB
273

提供一个简单的Arena集合,将EntryId映射到某些类型的值。

当你插入一个项目时,你会得到相应的ID,只要这个项目留在竞技场中,这个ID就不会改变。然后你可以通过ID检索或删除一个项目。这对于构建图形数据结构(树、链表或更灵活的图)很有用 - 例如,你可以通过它们的ID来描述节点之间的关系。

由于由简单的Vec支持,插入和按索引访问效率很高

替代方案

很多crate实现了竞技场。这个crate的重点是简单 - 没有花哨的功能。

如果你希望你的ID即使在删除其对应项目后也能保留下来,而不引起混淆,请考虑使用generational-arena。使用该crate,ID还会跟踪槽位的“生成”。删除一个项目,然后添加一个新的项目将产生一个具有不同生成的ID,即使槽位可能相同。(与这个crate不同,那里的ID将被重用)。

依赖项

~170KB