pub trait BucketOccupied: BucketCapacity {
    // Required methods
    fn occupy(&mut self, element: &mut [u8], ix: usize);
    fn free(&mut self, element: &mut [u8], ix: usize);
    fn is_free(&self, element: &[u8], ix: usize) -> bool;
    fn offset_to_first_data() -> usize;
    fn new(capacity: Capacity) -> Self;

    // Provided method
    fn copying_entry(
        &mut self,
        _element_new: &mut [u8],
        _ix_new: usize,
        _other: &Self,
        _element_old: &[u8],
        _ix_old: usize
    ) { ... }
}
Expand description

keep track of an individual element’s occupied vs. free state every element must either be occupied or free and should never be double occupied or double freed For parameters below, element is used to view/modify header fields or fields within the element data.

Required Methods§

source

fn occupy(&mut self, element: &mut [u8], ix: usize)

set entry at ix as occupied (as opposed to free)

source

fn free(&mut self, element: &mut [u8], ix: usize)

set entry at ix as free

source

fn is_free(&self, element: &[u8], ix: usize) -> bool

return true if entry at ix is free

source

fn offset_to_first_data() -> usize

of bytes prior to first data held in the element.

This is the header size, if a header exists per element in the data. This must be a multiple of sizeof(u64)

source

fn new(capacity: Capacity) -> Self

initialize this struct capacity is the number of elements allocated in the bucket

Provided Methods§

source

fn copying_entry( &mut self, _element_new: &mut [u8], _ix_new: usize, _other: &Self, _element_old: &[u8], _ix_old: usize )

copying entry. Any in-memory (per-bucket) data structures may need to be copied for this ix_old. no-op by default

Implementors§