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