Skip to main content

Bump

Struct Bump 

Source
pub struct Bump<const N: usize, M = MatterRawMutex> { /* private fields */ }
Expand description

A bump allocator that uses a provided memory chunk

Implementations§

Source§

impl<const N: usize, M: RawMutex> Bump<N, M>

Source

pub const fn new() -> Self

Create a new bump allocator

Source

pub fn init() -> impl Init<Self>

Return an initializer for a new bump allocator

Source

pub unsafe fn reset(&self)

Reset the allocator, making all previously allocated memory available again.

§Safety

This is unsafe because any previously allocated objects that are still in use will get their memory corrupted and overwritten with new objects.

Make sure that NO previously allocated objects are still in use when calling this method.

Source

pub fn pin_alloc<T>(&self, object: T, location: &str) -> Pin<BumpBox<'_, T>>
where T: Sized,

Allocate an object and return it pinned in a Pin<BumpBox<T>>

§Arguments
  • object: The object to allocate
  • location: A string describing the location of the allocation, for logging purposes
§Panics

This function will panic if there is not enough memory left in the bump allocator

Source

pub fn alloc<T>(&self, object: T, location: &str) -> BumpBox<'_, T>
where T: Sized,

Allocate an object and return it in a BumpBox<T>

§Arguments
  • object: The object to allocate
  • location: A string describing the location of the allocation, for logging purposes
§Panics

This function will panic if there is not enough memory left in the bump allocator

Trait Implementations§

Source§

impl<const N: usize, M: RawMutex> Default for Bump<N, M>

Source§

fn default() -> Self

Returns the “default value” for a type. Read more

Auto Trait Implementations§

§

impl<const N: usize, M = NoopRawMutex> !Freeze for Bump<N, M>

§

impl<const N: usize, M = NoopRawMutex> !RefUnwindSafe for Bump<N, M>

§

impl<const N: usize, M> Send for Bump<N, M>
where M: RawMutex + Send,

§

impl<const N: usize, M> Sync for Bump<N, M>
where M: RawMutex + Sync,

§

impl<const N: usize, M> Unpin for Bump<N, M>
where M: Unpin,

§

impl<const N: usize, M> UnsafeUnpin for Bump<N, M>
where M: UnsafeUnpin,

§

impl<const N: usize, M> UnwindSafe for Bump<N, M>
where M: 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<ST, DT> CastableFrom<ST, Initialized, Initialized> for DT
where ST: ?Sized, DT: ?Sized,

Source§

impl<ST, DT> CastableFrom<ST, Uninit, Uninit> for DT
where ST: ?Sized, DT: ?Sized,

Source§

impl<T> From<T> for T

Source§

fn from(t: T) -> T

Returns the argument unchanged.

Source§

impl<T, E> Init<T, E> for T

Source§

unsafe fn __init(self, slot: *mut T) -> Result<(), E>

Initializes slot. Read more
Source§

fn chain<F>(self, f: F) -> ChainInit<Self, F, T, E>
where F: FnOnce(&mut T) -> Result<(), E>,

First initializes the value using self then calls the function f with the initialized value. Read more
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> IntoEither for T

Source§

fn into_either(self, into_left: bool) -> Either<Self, Self>

Converts self into a Left variant of Either<Self, Self> if into_left is true. Converts self into a Right variant of Either<Self, Self> otherwise. Read more
Source§

fn into_either_with<F>(self, into_left: F) -> Either<Self, Self>
where F: FnOnce(&Self) -> bool,

Converts self into a Left variant of Either<Self, Self> if into_left(&self) returns true. Converts self into a Right variant of Either<Self, Self> otherwise. Read more
Source§

impl<T, I> IntoFallibleInit<T> for I
where I: Init<T>,

Source§

fn into_fallible<E>(self) -> impl Init<T, E>

Convert the infallible initializer to a fallible one.
Source§

impl<Source, Target> OctetsInto<Target> for Source
where Target: OctetsFrom<Source>,

Source§

type Error = <Target as OctetsFrom<Source>>::Error

Source§

fn try_octets_into( self, ) -> Result<Target, <Source as OctetsInto<Target>>::Error>

Performs the conversion.
Source§

fn octets_into(self) -> Target
where Self::Error: Into<Infallible>,

Performs an infallible conversion.
Source§

impl<T, E> PinInit<T, E> for T

Source§

unsafe fn __pinned_init(self, slot: *mut T) -> Result<(), E>

Initializes slot. Read more
Source§

fn pin_chain<F>(self, f: F) -> ChainPinInit<Self, F, T, E>
where F: FnOnce(Pin<&mut T>) -> Result<(), E>,

First initializes the value using self then calls the function f with the initialized value. Read more
Source§

impl<T> Read<Exclusive, BecauseExclusive> for T
where T: ?Sized,

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.
Source§

impl<V, T> VZip<V> for T
where V: MultiLane<T>,

Source§

fn vzip(self) -> V