相关疑难解决方法(0)

计算散列(digest::Digest trait)并返回字符串的通用函数

我在解决这个问题时遇到了一些麻烦。我正在尝试编写一个通用函数,它可以接受任何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)

generics traits rust

5
推荐指数
1
解决办法
301
查看次数

标签 统计

generics ×1

rust ×1

traits ×1