5 个版本
| 0.2.0 | 2024 年 6 月 19 日 |
|---|---|
| 0.2.0-rc3 | 2024 年 6 月 18 日 |
| 0.2.0-rc2 | 2024 年 6 月 17 日 |
| 0.2.0-rc1 | 2024 年 6 月 5 日 |
| 0.1.0 | 2023 年 11 月 24 日 |
在 算法 中排名 652
每月下载量 433
用于 7 crates
48KB
653 行
明确地摘要结构化数据
udigest 提供了对结构化数据进行明确哈希的实用工具。结构化数据可以是实现了 Digestable 特性的任何内容
str,String,CStr,CString- 整数:
i8,i16,i32,i64,i128,u8,u16,u32,u64,u128,char,isize,usize - 容器:
Box,Arc,Rc,Cow,Option,Result - 集合:数组、切片、
Vec、LinkedList、VecDeque、BTreeSet、BTreeMap
该特性有意不针对某些类型实现
HashMap、HashSet,因为它们不能以确定性的顺序遍历
可以使用宏为结构体实现 Digestable 特性
#[derive(udigest::Digestable)]
struct Person {
name: String,
job_title: String,
}
let alice = Person {
name: "Alice".into(),
job_title: "cryptographer".into(),
};
let hash = udigest::hash::<sha2::Sha256>(&alice);
该软件包有意不遵循任何现有的无歧义编码标准。编码格式是为 udigest 设计的,以在 Rust 中提供更好的使用体验。编码格式的详细信息可以在 encoding 模块中找到。
特性
digest支持实现了digest特性的哈希函数
如果没有启用该功能,该软件包仍然可以通过Digestable特性进行使用,该特性以泛型方式实现了无歧义编码- 使用宏
inline_struct!需要inline-struct std为标准库中的类型实现了Digestable特性alloc为alloc包中的类型实现了Digestable特性derive启用Digestable过程宏
依赖项
约 270-450KB
约 11K SLoC