Allocator

Struct Allocator 

Source
pub struct Allocator<A: GlobalAlloc> { /* private fields */ }
Expand description

A memory allocator that enables tracking of memory allocations and deallocations.

This allocator wraps any GlobalAlloc implementation to provide allocation tracking capabilities while maintaining the same allocation behavior and performance characteristics as the underlying allocator.

§Examples

use alloc_tracker::Allocator;

#[global_allocator]
static ALLOCATOR: Allocator<std::alloc::System> = Allocator::system();

Implementations§

Source§

impl Allocator<System>

Source

pub const fn system() -> Self

Creates a new tracking allocator using the system’s default allocator.

This is a convenience method for the common case of wanting to track allocations without changing the underlying allocation strategy.

Source§

impl<A: GlobalAlloc> Allocator<A>

Source

pub const fn new(allocator: A) -> Self

Creates a new tracking allocator that enables allocation tracking for the provided allocator.

The resulting allocator will have the same performance and behavior characteristics as the underlying allocator, with the addition of allocation tracking capabilities.

Trait Implementations§

Source§

impl<A: GlobalAlloc> Debug for Allocator<A>

Source§

fn fmt(&self, f: &mut Formatter<'_>) -> Result

Formats the value using the given formatter. Read more
Source§

impl<A: GlobalAlloc> GlobalAlloc for Allocator<A>

Source§

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

Allocates memory as described by the given layout. Read more
Source§

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

Deallocates the block of memory at the given ptr pointer with the given layout. Read more
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
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<A> Freeze for Allocator<A>
where A: Freeze,

§

impl<A> RefUnwindSafe for Allocator<A>
where A: RefUnwindSafe,

§

impl<A> Send for Allocator<A>
where A: Send,

§

impl<A> Sync for Allocator<A>
where A: Sync,

§

impl<A> Unpin for Allocator<A>
where A: Unpin,

§

impl<A> UnwindSafe for Allocator<A>
where A: 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.