Struct fixed_bump::DynamicBump

source ·
pub struct DynamicBump(_);
Expand description

Like Bump, but uses chunk size and alignment values provided at runtime rather than compile time.

Instead of passing Size and Align type parameters, Self::new accepts a Layout. Otherwise, this type behaves identically to Bump.

Implementations§

Creates a new DynamicBump. layout specifies the size and alignment of the chunks allocated internally by the allocator.

The layout passed to Self::new.

Tries to allocate memory with a size and alignment matching layout.

Returns a pointer to the memory on success, or None on failure. The memory is valid until the DynamicBump is dropped. Note that the returned memory could be larger than layout.size().

This method is similar to Allocator::allocate, except it returns an Option instead of a Result.

Allocation is guaranteed to succeed, assuming the global allocator succeeds, if layout.size() is less than or equal to self.layout().size() and layout.align() is less than or equal to self.layout().align(). See Self::can_allocate.

Examples found in repository?
src/dynamic.rs (line 150)
149
150
151
    fn allocate(&self, layout: Layout) -> Result<NonNull<[u8]>, AllocError> {
        self.allocate(layout).ok_or(AllocError)
    }

Allocates a value of type T.

The memory is initialized with value and a reference to the value is returned. Note that the value’s destructor will not be called automatically.

Panics

Panics if this allocator cannot allocate memory matching Layout::new::<T>() (see Self::can_allocate). Note that if the global allocator fails, handle_alloc_error is called instead of panicking.

For an equivalent that doesn’t panic or call handle_alloc_error, see Self::try_alloc_value.

Tries to allocate a value of type T.

If the allocation succeeds, the memory is initialized with value and a reference to the value is returned. Note that the value’s destructor will not be called automatically.

Allocation succeeds if and only if Self::allocate is able to allocate memory matching Layout::new::<T>(). See Self::allocate for details regarding the circumstances in which allocation can fail.

Errors

If allocation fails, Err(value) is returned.

Returns whether this allocator can allocate memory matching layout.

This is guaranteed to return true if layout.size() is less than or equal to self.layout().size() and layout.align() is less than or equal to self.layout().align(). It may return true if the alignment is bigger, but never if the size is.

Trait Implementations§

🔬This is a nightly-only experimental API. (allocator_api)
Attempts to allocate a block of memory. Read more
🔬This is a nightly-only experimental API. (allocator_api)
Deallocates the memory referenced by ptr. Read more
🔬This is a nightly-only experimental API. (allocator_api)
Behaves like allocate, but also ensures that the returned memory is zero-initialized. Read more
🔬This is a nightly-only experimental API. (allocator_api)
Attempts to extend the memory block. Read more
🔬This is a nightly-only experimental API. (allocator_api)
Behaves like grow, but also ensures that the new contents are set to zero before being returned. Read more
🔬This is a nightly-only experimental API. (allocator_api)
Attempts to shrink the memory block. Read more
🔬This is a nightly-only experimental API. (allocator_api)
Creates a “by reference” adapter for this instance of Allocator. Read more

Auto Trait Implementations§

Blanket Implementations§

Gets the TypeId of self. Read more
Immutably borrows from an owned value. Read more
Mutably borrows from an owned value. Read more

Returns the argument unchanged.

Calls U::from(self).

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

The type returned in the event of a conversion error.
Performs the conversion.
The type returned in the event of a conversion error.
Performs the conversion.