use std::mem::MaybeUninit;
use std::ptr::NonNull;
use crate::values::layout::value_alloc_size::ValueAllocSize;
pub(crate) enum ChunkAllocationDirection {
Up,
Down,
}
pub(crate) trait ArenaAllocator {
fn allocated_bytes(&self) -> usize;
fn remaining_capacity(&self) -> usize;
fn allocation_overhead(&self) -> usize;
fn alloc(&self, size: ValueAllocSize) -> NonNull<u8>;
const CHUNK_ALLOCATION_DIRECTION: ChunkAllocationDirection;
type ChunkRevIterator<'a>: Iterator<Item = &'a [MaybeUninit<u8>]>
where
Self: 'a;
unsafe fn iter_allocated_chunks_rev(&self) -> Self::ChunkRevIterator<'_>;
fn finish(&mut self);
}