Crate byte_arena

source ·
Expand description

A statically sized arena for byte buffers.

This crate provides an Arena for allocation of dynmically sized byte buffers ([u8]) without dependency on std or alloc.

§Usage

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_buffer = arena.alloc(1024).unwrap();
let mut zeroed_buffer_index = buf.index();

let buf = arena.get(buf_index).unwrap();

arena.dealloc(buf_index);
arena.dealloc(zeroed_buffer_index);

Note that the use of Index values between different Arena instances is not specified and may cause panics, corrupt the internal representations but will not cause undefined behavior.

Structs§