Expand description
§heapsz
A crate for calculating the heap usage of a data structure.
It’s simple. Only one required method in the HeapSize trait, which can be
generated by #[derive(HeapSize)].
It’s fast. It estimates an approximate heap size in O(1) time.
§Usage
§Examples
Calculate heap_size() selectively
| Example | Expanded example |
|---|---|
|
ⓘ |
ⓘ |
Calculate heap_size() of all fields
| Example | Expanded example |
|---|---|
|
ⓘ |
ⓘ |
Skip irrelative fields
| Example | Expanded example |
|---|---|
|
ⓘ |
ⓘ |
Implement HeapSize for third-party structs
| Example | Expanded example |
|---|---|
|
ⓘ |
ⓘ |
§#[derive(HeapSize)]
§Field attributes
Apply to one field in a struct or in an enum variant.
-
#[heap_size]By default,
#[derive(HeapSize)]generates an empty implementation which always return 0.#[heap_size]needs to be added to fields that have a heap allocation.This is because of 1) most struct does not contain heap allocation at all, and 2) they often do not implement the
HeapSizetrait. -
#[heap_size(skip)]Skip this field: do not calculate its heap size.
Requires a struct has a container attribute
#[heap_size]. -
#[heap_size(with = "module")]#[derive(HeapSize)]will use$module::heap_sizeas the function to obtain this field’s heap size.
§Container attributes
Apply to a struct or enum declaration.
#[heap_size]By default,#[derive(HeapSize)]generates an empty implementation that always return 0. By adding#[heap_size], it sums upheap_size()of all fields in a struct or an enum.
§Variant attributes
Apply to a variant of an enum.
-
#[heap_size]Generate By default,
#[derive(HeapSize)]generates an empty implementation which always return 0. By adding#[heap_size], it sums upheap_size()of fields in a variant. -
#[heap_size(skip)]Skip this variant: do not calculate its heap size.
Requires an enum has a
#[heap_size]container attribute.
§License
This project is licensed under the MIT license.
Modules§
- examples
- Examples of
#[derive(heapsz_derive::HeapSize)].
Traits§
- Heap
Size - Query the number of bytes of an object.