#generational-arena #arena-allocator #arena #generational #collection

no-std pulz-arena

具有紧凑代际索引的代际内存分配器

6个版本 (破坏性更改)

0.4.0 2022年1月5日
0.3.0 2021年10月10日
0.2.0 2021年9月25日
0.1.1 2021年8月16日
0.0.1 2021年8月16日

#933数据结构

每月下载量 32
用于 4 个crate(通过 pulz-ecs

MIT/Apache

70KB
1K SLoC

pulz-arena

Crates.io docs.rs license: MIT/Apache-2.0 Rust CI

一个受 generational-arena 启发的 代际内存分配器,具有紧凑的代际索引。

当你将一个值插入到内存分配器中时,你会得到一个索引指针。然后你可以使用这个索引指针来访问提供的值。

示例

use pulz_arena::{Arena,Index};

let mut arena = Arena::new();

// insert some elements and remember the returned index
let a = arena.insert("foo");
let b = arena.insert("bar");

// access inserted elements by returned index
assert_eq!("bar", arena[b]);

// there are also the "checked" versions `get` and `get_mut` that returns Option. 
assert_eq!(Some(&"foo"), arena.get(a));

// items can be removed efficiently
assert_eq!(Some("foo"), arena.remove(a));
assert!(!arena.contains(a));

no_std

此crate也应能够在不使用 std 的情况下运行。无需额外配置。

许可协议

此仓库受以下之一许可:

由你选择。

除非你明确表示,否则任何有意提交以包含在你工作中的贡献,根据Apache-2.0许可证定义,应如上所述双重许可,不附加任何额外条款或条件。

无运行时依赖