2个不稳定版本
| 0.1.0 | 2024年5月14日 |
|---|---|
| 0.0.1 | 2024年4月25日 |
#101 在 内存管理 中
34KB
769 行
heapsz
用于计算数据结构堆使用的crate。
它很简单。只需要在HeapSize特质中实现一个方法,该方法可以通过#[derive(HeapSize)]自动生成。
它很快。它可以在O(1)时间内估算一个近似的堆大小。
用法
示例
选择性计算heap_size()
| 示例 | 展开示例 |
|---|---|
|
|
计算所有字段的heap_size()
| 示例 | 展开示例 |
|---|---|
|
|
跳过无关字段
| 示例 | 展开示例 |
|---|---|
|
|
为第三方结构体实现HeapSize
| 示例 | 展开示例 |
|---|---|
|
|
#[derive(HeapSize)]
字段属性
应用于结构体或枚举变体中的一个字段。
-
#[heap_size]默认情况下,
#[derive(HeapSize)]会生成一个空的实现,总是返回0。需要为具有堆分配的字段添加#[heap_size]。这是因为1)大多数结构体根本不包含堆分配,2)它们通常不实现
HeapSize特质。 -
#[heap_size(skip)]跳过此字段:不计算其堆大小。
要求结构体必须有一个容器属性
#[heap_size]。 -
#[heap_size(使用= "模块")]#[derive(HeapSize)]将使用$module::heap_size作为获取此字段堆大小的函数。
容器属性
应用于结构体或枚举声明。
#[heap_size]默认情况下,#[derive(HeapSize)]生成一个空的实现,总是返回 0。通过添加#[heap_size],它会将结构体或枚举中所有字段的heap_size()相加。
变体属性
应用于枚举的变体。
-
#[heap_size]默认情况下,
#[derive(HeapSize)]生成一个空的实现,总是返回 0。通过添加#[heap_size],它会将变体中字段的heap_size()相加。 -
#[heap_size(skip)]跳过此变体:不计算其堆大小。
要求枚举有一个
#[heap_size]容器属性。
许可证
本项目根据 MIT 许可证 许可。
依赖关系
~0–375KB