[][src]Crate deepsize

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>,
}

fn main() {
    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

known_deep_size

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

Structs

Context

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

DeepSizeOf

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