freeze

Crates.iofreeze
lib.rsfreeze
version0.1.1
created_at2025-03-02 14:51:46.938859+00
updated_at2025-03-02 22:56:17.667149+00
descriptionA mmap-backed bump allocator that allows compact and zero-realloc mutability of the top vector.
homepagehttps://github.com/Adam-Vandervorst/Freeze/
repositoryhttps://github.com/Adam-Vandervorst/Freeze/
max_upload_size
id1574650
size12,510
Adam V (Adam-Vandervorst)

documentation

README

Freeze

Currently, provides a simple bump-allocator that allows the top vector to be temporarily mutable, before being frozen as the new vector is allocated.

let mut alloc = BumpAllocRef::new();

let s1: &[u8] = {
    let mut v1: LiquidVecRef = alloc.top();
    v1.extend_from_slice(&[1, 2, 3]);
    v1.extend_one(4);
    v1.extend_from_within(..3);
    v1.deref_mut().reverse();
    v1.pop();
    v1.freeze()
};

assert_eq!(s1, [3, 2, 1, 4, 3, 2]);

let s2: &[u8] = {
    let mut v1: LiquidVecRef = alloc.top();
    v1.extend_from_slice(&[10, 20, 30]);
    v1.extend_one(40);
    v1.extend_from_within(..3);
    v1.deref_mut().reverse();
    v1.pop();
    v1.freeze()
};

assert_eq!(s2, [30, 20, 10, 40, 30, 20]);
assert_eq!(alloc.data_size(), (s1.len() + s2.len()));
Commit count: 9

cargo fmt