#arena #no-heap #no-std

no-std compact_arena

一个库,包含一些类型,允许使用小内存占用进行索引化的存储区域

2个版本

0.4.1 2020年10月18日
0.4.0 2019年7月14日
0.3.2 2019年5月27日
0.3.0 2019年4月25日
0.1.1 2019年3月26日

#231 in 内存管理

每月 29 次下载

MIT/Apache

25KB
307

compact_arena

Travis Build Status Docs Current Crates.io Version

这是一个带有索引化存储区域的库。目前有三个类型:使用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许可证定义的,您提交的任何有意包含在作品中的贡献,均应按照上述方式双许可,不附加任何额外条款或条件。

无运行时依赖