Struct wr_malloc_size_of::MallocSizeOfOps

source ·
pub struct MallocSizeOfOps {
    pub size_of_op: unsafe extern "C" fn(ptr: *const c_void) -> usize,
    pub enclosing_size_of_op: Option<unsafe extern "C" fn(ptr: *const c_void) -> usize>,
}
Expand description

Operations used when measuring heap usage of data structures.

Fields§

§size_of_op: unsafe extern "C" fn(ptr: *const c_void) -> usize

A function that returns the size of a heap allocation.

§enclosing_size_of_op: Option<unsafe extern "C" fn(ptr: *const c_void) -> usize>

Like size_of_op, but can take an interior pointer. Optional because not all allocators support this operation. If it’s not provided, some memory measurements will actually be computed estimates rather than real and accurate measurements.

Implementations§

source§

impl MallocSizeOfOps

source

pub fn new( size_of: unsafe extern "C" fn(ptr: *const c_void) -> usize, malloc_enclosing_size_of: Option<unsafe extern "C" fn(ptr: *const c_void) -> usize>, ) -> Self

source

pub(crate) fn is_empty<T: ?Sized>(ptr: *const T) -> bool

Check if an allocation is empty. This relies on knowledge of how Rust handles empty allocations, which may change in the future.

source

pub unsafe fn malloc_size_of<T: ?Sized>(&self, ptr: *const T) -> usize

Call size_of_op on ptr, first checking that the allocation isn’t empty, because some types (such as Vec) utilize empty allocations.

source

pub fn has_malloc_enclosing_size_of(&self) -> bool

Is an enclosing_size_of_op available?

source

pub unsafe fn malloc_enclosing_size_of<T>(&self, ptr: *const T) -> usize

Call enclosing_size_of_op, which must be available, on ptr, which must not be empty.

Auto Trait Implementations§

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.