4 个版本
0.2.0 | 2024年5月21日 |
---|---|
0.1.2 | 2024年5月16日 |
0.1.1 | 2024年5月10日 |
0.1.0 | 2024年5月10日 |
#222 在 内存管理
19KB
389 行
byte-arena
no_std, no_alloc 的用于分配字节数组的 arena。
用法
将 byte-arena
添加到您的 Cargo.toml
byte-arena = "0.1.0"
有关此crate的用法,请参阅 docs.rs。
许可证
许可协议为以下之一
- MIT 许可证 或
- Apache 许可证,版本 2.0,由您选择。
lib.rs
:
静态大小的字节数组 arena。
此 crate 提供了一个用于分配动态大小的字节数组([u8]
)的 Arena
,而不依赖于 std
或 alloc
。
用法
use byte_arena::Arena;
// Create a new arena with 8KiB backing storage.
let mut arena = Arena::new([0; 8192]);
// Allocate a 1KiB buffer.
let mut buf = arena.alloc(1024).unwrap();
buf.fill(42);
// The index allows access to the allocation after the
// buffer has been dropped.
let mut buf_index = buf.index();
// Allocate a 1KiB zeroed buffer.
let mut zeroed_buf = arena.alloc(1024).unwrap();
let mut zeroed_buf_index = zeroed_buf.index();
let buf = arena.get(buf_index).unwrap();
arena.dealloc(buf_index);
arena.dealloc(zeroed_buf_index);
请注意,不同 Arena
实例之间使用 Index
值的使用没有指定,可能会导致 panic,损坏内部表示,但不会导致未定义行为。