Crate deepsize

source ·
Expand description

A utility for recursively measuring the size of an object

This contains the DeepSizeOf trait, and re-exports the DeepSizeOf derive macro from deepsize_derive

use deepsize::DeepSizeOf;

#[derive(DeepSizeOf)]
struct Test {
    a: u32,
    b: Box<u8>,
}

let object = Test {
    a: 15,
    b: Box::new(255),
};

// The stack size of the struct:
//    The size of a u32 (4)
//    4 bytes padding (64 bit only)
//    The stack size of the Box (a usize pointer, 32 or 64 bits: 4 or 8 bytes)
// + the size of a u8 (1), the Box's heap storage
#[cfg(target_pointer_width = "64")]
assert_eq!(object.deep_size_of(), 17);
#[cfg(target_pointer_width = "32")]
assert_eq!(object.deep_size_of(), 9);

Macros

A macro to generate an impl for types with known inner allocation sizes.

Structs

The context of which references have already been seen. This should only be used in the implementation of the deep_size_of_children function, and (eventually, when this reaches 0.2) will not be able to be constructed, and only obtained from inside the function.

Traits

A trait for measuring the size of an object and its children

Derive Macros