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