NoopAllocator

Struct NoopAllocator 

Source
pub struct NoopAllocator<'a>(/* private fields */);
Expand description

An Allocator that does nothing.

Specifically:

  • allocate and allocate_zeroed will return Err for any non-zero-sized allocation requests
  • deallocate is a no-op, and does not require that ptr be “currently allocated”, or fit layout.
  • shrink, grow, and grow_zeroed do not require that ptr be “currently allocated”, or fit old_layout, and will successfully return the original pointer unchanged (with the length of the new layout) if the ptr is aligned for the new layout and the new layout is smaller or the same size as the old layout.

This type is usable as an Allocator when you want to borrow an existing memory range for use in a single-allocation collection type, for example in Box or Vec.

§Safety:

Many functions in this crate assume that impl Allocator for NoopAllocator<'_> as described above is sound, but feature(allocator_api) is unstable and the preconditions may change.

Implementations§

Source§

impl<'a> NoopAllocator<'a>

Source

pub const fn new() -> Self

Creates a new NoopAllocator<'a>.

Trait Implementations§

Source§

impl Allocator for NoopAllocator<'_>

Source§

fn allocate(&self, layout: Layout) -> Result<NonNull<[u8]>, AllocError>

🔬This is a nightly-only experimental API. (allocator_api)
Attempts to allocate a block of memory. Read more
Source§

unsafe fn deallocate(&self, _ptr: NonNull<u8>, _layout: Layout)

🔬This is a nightly-only experimental API. (allocator_api)
Deallocates the memory referenced by ptr. Read more
Source§

unsafe fn grow( &self, ptr: NonNull<u8>, old_layout: Layout, new_layout: Layout, ) -> Result<NonNull<[u8]>, AllocError>

🔬This is a nightly-only experimental API. (allocator_api)
Attempts to extend the memory block. Read more
Source§

unsafe fn grow_zeroed( &self, ptr: NonNull<u8>, old_layout: Layout, new_layout: Layout, ) -> Result<NonNull<[u8]>, AllocError>

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

unsafe fn shrink( &self, ptr: NonNull<u8>, old_layout: Layout, new_layout: Layout, ) -> Result<NonNull<[u8]>, AllocError>

🔬This is a nightly-only experimental API. (allocator_api)
Attempts to shrink the memory block. Read more
Source§

fn allocate_zeroed(&self, layout: Layout) -> Result<NonNull<[u8]>, AllocError>

🔬This is a nightly-only experimental API. (allocator_api)
Behaves like allocate, but also ensures that the returned memory is zero-initialized. Read more
Source§

fn by_ref(&self) -> &Self
where Self: Sized,

🔬This is a nightly-only experimental API. (allocator_api)
Creates a “by reference” adapter for this instance of Allocator. Read more
Source§

impl<'a> Default for NoopAllocator<'a>

Source§

fn default() -> Self

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

Auto Trait Implementations§

§

impl<'a> Freeze for NoopAllocator<'a>

§

impl<'a> RefUnwindSafe for NoopAllocator<'a>

§

impl<'a> Send for NoopAllocator<'a>

§

impl<'a> Sync for NoopAllocator<'a>

§

impl<'a> Unpin for NoopAllocator<'a>

§

impl<'a> UnwindSafe for NoopAllocator<'a>

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.