LayoutBulkAlloc

Struct LayoutBulkAlloc 

Source
pub struct LayoutBulkAlloc<B = System>
where B: GlobalAlloc,
{ /* private fields */ }
Expand description

LayoutBulkAlloc is an implementation of GlobalAlloc.

This struct owns a cache for a specified layout.

Method alloc and dealloc check whether the required Layout fits the cache or not. If the Layout does not fit the cache, the methods delegate the request to the backend; otherwise, dealloc stores the passed pointer into the cache, and alloc dispatches and returns a pointer from the cache.

See alloc and dealloc for the details.

Instance drop releases all the cached memory. All the pointers allocated via the instance will be invalid after then. Accessing such a pointer may lead to memory unsafety even if the pointer itself is not deallocated.

§Safety

The allocated pointers via LayoutBulkAlloc will be invalid after the instance is dropped. Accessing such a pointer may lead to memory unsafety even if the pointer itself is not deallocated.

Implementations§

Source§

impl<B> LayoutBulkAlloc<B>
where B: GlobalAlloc,

Source

pub fn new(layout: Layout, backend: B) -> Self

Creates a new instance.

Trait Implementations§

Source§

impl<B> GlobalAlloc for LayoutBulkAlloc<B>
where B: GlobalAlloc,

Source§

unsafe fn alloc(&self, layout: Layout) -> *mut u8

alloc rounds up the size of layout to a multiple of the alignment of that.

If the rounded-up layout does not fits the cache, delegates the request to the backend; Otherwise, allocates and caches a memory chunk via the backend if the cache is empty, and dispatches a pointer from the cache.

read more

§Safety

Instance drop releases all the memory, and all the pointers allocated via the instance will be invalid after then. Accessing such a pointer may lead to memory unsafety even if the pointer itself is not deallocated.

Source§

unsafe fn dealloc(&self, ptr: *mut u8, layout: Layout)

dealloc rounds up the size of layout to a multiple of the alignment of that.

If the rounded-up layout does not fits the cache, delegates the request to the backend; otherwise, dealloc stores the passed pointer into the cache. i.e. this method does not release the memory immediately. It is when the object is dropped to free the memory.

read more

1.28.0 · Source§

unsafe fn alloc_zeroed(&self, layout: Layout) -> *mut u8

Behaves like alloc, but also ensures that the contents are set to zero before being returned. Read more
1.28.0 · Source§

unsafe fn realloc( &self, ptr: *mut u8, layout: Layout, new_size: usize, ) -> *mut u8

Shrinks or grows a block of memory to the given new_size in bytes. The block is described by the given ptr pointer and layout. Read more

Auto Trait Implementations§

§

impl<B = System> !Freeze for LayoutBulkAlloc<B>

§

impl<B = System> !RefUnwindSafe for LayoutBulkAlloc<B>

§

impl<B = System> !Send for LayoutBulkAlloc<B>

§

impl<B = System> !Sync for LayoutBulkAlloc<B>

§

impl<B> Unpin for LayoutBulkAlloc<B>
where B: Unpin,

§

impl<B> UnwindSafe for LayoutBulkAlloc<B>
where B: UnwindSafe,

Blanket Implementations§

Source§

impl<T> Any for T
where T: 'static + ?Sized,

Source§

fn type_id(&self) -> TypeId

Gets the TypeId of self. Read more
Source§

impl<T> Borrow<T> for T
where T: ?Sized,

Source§

fn borrow(&self) -> &T

Immutably borrows from an owned value. Read more
Source§

impl<T> BorrowMut<T> for T
where T: ?Sized,

Source§

fn borrow_mut(&mut self) -> &mut T

Mutably borrows from an owned value. Read more
Source§

impl<T> From<T> for T

Source§

fn from(t: T) -> T

Returns the argument unchanged.

Source§

impl<T, U> Into<U> for T
where U: From<T>,

Source§

fn into(self) -> U

Calls U::from(self).

That is, this conversion is whatever the implementation of From<T> for U chooses to do.

Source§

impl<T, U> TryFrom<U> for T
where U: Into<T>,

Source§

type Error = Infallible

The type returned in the event of a conversion error.
Source§

fn try_from(value: U) -> Result<T, <T as TryFrom<U>>::Error>

Performs the conversion.
Source§

impl<T, U> TryInto<U> for T
where U: TryFrom<T>,

Source§

type Error = <U as TryFrom<T>>::Error

The type returned in the event of a conversion error.
Source§

fn try_into(self) -> Result<U, <U as TryFrom<T>>::Error>

Performs the conversion.