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内存管理

MIT/Apache

19KB
389

byte-arena

no_std, no_alloc 的用于分配字节数组的 arena。

用法

byte-arena 添加到您的 Cargo.toml

byte-arena = "0.1.0"

有关此crate的用法,请参阅 docs.rs

许可证

许可协议为以下之一


lib.rs:

静态大小的字节数组 arena。

此 crate 提供了一个用于分配动态大小的字节数组([u8])的 Arena,而不依赖于 stdalloc

用法

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,损坏内部表示,但不会导致未定义行为。

无运行时依赖

功能