Struct capnp::message::HeapAllocator
source · pub struct HeapAllocator { /* private fields */ }
Expand description
Standard segment allocator. Allocates each segment via alloc::alloc::alloc_zeroed()
.
Implementations§
source§impl HeapAllocator
impl HeapAllocator
pub fn new() -> Self
sourcepub fn first_segment_words(self, value: u32) -> Self
pub fn first_segment_words(self, value: u32) -> Self
Sets the size of the initial segment in words, where 1 word = 8 bytes.
sourcepub fn allocation_strategy(self, value: AllocationStrategy) -> Self
pub fn allocation_strategy(self, value: AllocationStrategy) -> Self
Sets the allocation strategy for segments after the first one.
sourcepub fn max_segment_words(self, value: u32) -> Self
pub fn max_segment_words(self, value: u32) -> Self
Sets the maximum number of words allowed in a single allocation.
Trait Implementations§
source§impl Allocator for HeapAllocator
impl Allocator for HeapAllocator
source§fn allocate_segment(&mut self, minimum_size: u32) -> (*mut u8, u32)
fn allocate_segment(&mut self, minimum_size: u32) -> (*mut u8, u32)
Allocates zeroed memory for a new segment, returning a pointer to the start of the segment
and a u32 indicating the length of the segment in words. The allocated segment must be
at least
minimum_size
words long (minimum_size * 8
bytes long). Allocator implementations
commonly allocate much more than the minimum, to reduce the total number of segments needed.
A reasonable strategy is to allocate the maximum of minimum_size
and twice the size of the
previous segment.source§unsafe fn deallocate_segment(
&mut self,
ptr: *mut u8,
word_size: u32,
_words_used: u32
)
unsafe fn deallocate_segment( &mut self, ptr: *mut u8, word_size: u32, _words_used: u32 )
Indicates that a segment, previously allocated via allocate_segment(), is no longer in use.
word_size
is the length of the segment in words, as returned from allocate_segment()
.
words_used
is always less than or equal to word_size
, and indicates how many
words (contiguous from the start of the segment) were possibly written with non-zero values. Read moresource§impl Debug for HeapAllocator
impl Debug for HeapAllocator
Auto Trait Implementations§
impl Freeze for HeapAllocator
impl RefUnwindSafe for HeapAllocator
impl Send for HeapAllocator
impl Sync for HeapAllocator
impl Unpin for HeapAllocator
impl UnwindSafe for HeapAllocator
Blanket Implementations§
source§impl<T> BorrowMut<T> for Twhere
T: ?Sized,
impl<T> BorrowMut<T> for Twhere
T: ?Sized,
source§fn borrow_mut(&mut self) -> &mut T
fn borrow_mut(&mut self) -> &mut T
Mutably borrows from an owned value. Read more