2个版本
0.4.1 | 2020年10月18日 |
---|---|
0.4.0 | 2019年7月14日 |
0.3.2 |
|
0.3.0 |
|
0.1.1 |
|
#231 in 内存管理
每月 29 次下载
25KB
307 行
compact_arena
这是一个带有索引化存储区域的库。目前有三个类型:使用32位索引的 SmallArena
可存储最多2³²个对象。 TinyArena
使用16位索引,可以存储最多65536个对象,无论对象大小如何。 NanoArena
使用8位索引,包含最多256个对象。
这可以在我们有许多对象之间关系的情况下节省内存,例如在图算法中。 NanoArena
可能最适用于嵌入式场景。
使用方法
将以下依赖项添加到您的 Cargo.toml
compact_arena = "0.3"
默认情况下,TinyArena
使用无安全代码来维护存储,但要求存储的类型必须是 Default + Copy
。要更改此设置,您可以使用 uninit
功能来启用所有类型的使用,这会使用更多的安全代码。
compact_arena = { version = "0.3", features = ["alloc", "uninit"] }
在您的代码中,如下使用它
use compact_arena::mk_arena;
mk_arena!(arena);
let hello = arena.add("Hello");
let world = arena.add("World");
println!("{}, {}!", arena[hello], arena[world]);
有关更多信息,请参阅 文档。
许可
许可协议为以下之一
- Apache许可证2.0版本,(LICENSE-APACHE 或 https://apache.ac.cn/licenses/LICENSE-2.0)
- MIT许可证 (LICENSE-MIT 或 http://opensource.org/licenses/MIT)
任选其一。
贡献
除非您明确声明,否则根据Apache-2.0许可证定义的,您提交的任何有意包含在作品中的贡献,均应按照上述方式双许可,不附加任何额外条款或条件。