1 个不稳定版本
0.1.0 | 2018年12月28日 |
---|
#19 in #trait-object
13KB
278 行
简单的基于动态特征对象的哈希库
此库允许您定义一个薄的、非泛型的接口,通过该接口可以传递各种哈希和哈希函数。这是通过特征对象实现的。
尽管每个crate都可以定义和实现自定义的Hash / HashType结构体,但此库内置了对
- sha3
- sha2
crate的支持。
可以通过分别启用“sha2”或“sha3”功能来启用这些功能。
示例
假设您正在编写一个Web服务器库,该库接受来自客户端的哈希。哈希和哈希类型分别作为字节数组和字符串传递。Web服务器不应了解允许的哈希类型,这些可以在运行时传递
use dynhash::{Hash, HashType};
fn new_hash(
available_types: &[&'static HashType],
digest: &[u8],
hash_type: &str,
) -> Option<Box<Hash>> {
for h in available_types.iter() {
if h.as_string() == hash_type {
return h.new_with_content(digest).ok();
}
}
return None;
}
这允许Web服务器库支持所有类型的哈希,高级crate选择支持。
依赖关系
~21–350KB