我在解决这个问题时遇到了一些麻烦。我正在尝试编写一个通用函数,它可以接受任何digest::Digest并吐出计算摘要的字符串形式(“十六进制字符串”)。
这是作为最小示例的非通用版本:
#![forbid(unsafe_code)]
#![forbid(warnings)]
extern crate sha2; // 0.9.1
use sha2::{Sha256, Digest}; // 0.9.1
fn main() {
let hash = Sha256::new().chain("String data").finalize();
let s = format!("{:x}", hash);
println!("Result: {}", s);
}
Run Code Online (Sandbox Code Playgroud)
...这是我对通用版本的尝试:
#![forbid(unsafe_code)]
#![forbid(warnings)]
extern crate sha2; // 0.9.1
extern crate digest; // 0.9.0
use digest::Digest;
use sha2::Sha256;
fn compute_hash<D: Digest>(input_data: &str) -> String {
let mut hasher = D::new();
hasher.update(input_data.as_bytes());
let digest = hasher.finalize();
format!("{:x}", digest)
}
fn main() {
let s = …Run Code Online (Sandbox Code Playgroud)