Hash 如何使用实现sha2板条箱中摘要特征的类型(如Sha256)散列结构?

Hash 如何使用实现sha2板条箱中摘要特征的类型(如Sha256)散列结构?,hash,rust,Hash,Rust,我正在尝试对结构进行哈希运算,以便根据其内容为该结构生成GUID 使用sha2::{Digest,Sha256}; 使用std::hash::{hash,Hasher}; #[导出(散列)] 结构人{ 名字:字符串; lastName:String; } 让某人{ 名字:“bob”。to_string(), 姓氏:“构建者”。to_string() } 让mut s=Sha256::new(); a、 散列(&mut); 普林顿!(“{}”,s.finsih()); 我的扩展目标是简单地使用a

我正在尝试对结构进行哈希运算,以便根据其内容为该结构生成GUID

使用sha2::{Digest,Sha256};
使用std::hash::{hash,Hasher};
#[导出(散列)]
结构人{
名字:字符串;
lastName:String;
}
让某人{
名字:“bob”。to_string(),
姓氏:“构建者”。to_string()
}
让mut s=Sha256::new();
a、 散列(&mut);
普林顿!(“{}”,s.finsih());
我的扩展目标是简单地使用
a.id()
,它将散列该结构上的所有属性。这是一个
impl Person{id()->String}

我试着用
impl x表示y
,但结果抛出了一个
impl不在板条箱中使用类型的问题

impl Hasher for Sha256 {
    fn finish(&self) -> u64 {
        self.0.result()
    }

    fn write(&mut self, msg: &[u8]) {
        self.0.input(msg)
    }
}

您的问题是
摘要
类型,如
Sha256
,没有实现
Hasher
——因为它们是不同类型的散列。
Hasher
特性适用于在Rust自己的代码中使用散列数据的类型,如
HashMap
<另一方面,code>Sha256给出了32字节的哈希值

要使用
Sha256
,您需要手动向其输入要计算哈希的字节-您可以在
impl
块中执行此操作

impl个人{
fn id(&self)->sha2::摘要::通用数组::通用数组{
让mut s=Sha256::new();
s、 输入(self.firstName.as_bytes());
s、 输入(self.lastName.as_bytes());
s、 结果()
}
}

Idiomatic Rust使用
snake\u case
表示变量、方法、宏、字段和模块<代码>大写用于类型和枚举变量;对于静力学和常数,
SNAKE\u案例
。请改用
first\u name
last\u name
。您提供的代码不是有效的Rust语法,并且包含拼写错误,这表明您甚至没有尝试运行代码。