#hashing #values #interface #hash #hashable #hasher #foo

simple-hash

为 Rust 值提供简单的哈希接口

2 个版本

0.1.1 2022年5月29日
0.1.0 2022年5月29日

#6 in #hashable

MIT 许可证

6KB
120

为 Rust 值提供简单的哈希接口

这个 crate 定义了两个 trait:[Hasher] 和 [Hashable]。

第一个代表哈希算法和状态,目前实现了 sha2::Sha256

第二个为任何需要被哈希的 Rust 值实现了。提供了一个同名的 Helper derive 宏以避免样板代码。

当前实现 [Hashable] 的 std 类型集有限。欢迎提交 PR。

示例使用

use simple_hash::Hashable;
#[derive(Hashable)]
struct Foo {
    a: u8,
    b: u16,
    c: Vec<u32>,
}
let foo = Foo {
    a: 8,
    b: 99,
    c: vec![0,1,2,3],
};
let res = foo.digest::<sha2::Sha256>();
assert_eq!(res, hex_literal::hex!("929863ce588951eae0cc88755216f96951d431e7d15adbb836d8f1960bb65a9d"));

依赖项

~2MB
~48K SLoC