クレートsha2
は、タイプSha256
を含み、Digest
のクレートdigest
で定義された形質を実装します。この形質もsha2
から再輸出されています。異なるクレートの形質を具現する構造体を使用する
私はちょうどdigest
、sha2
に言及していないファイルを書きたい:
merkle_tree.rs:
use digest::Digest;
#[derive(Default)]
pub struct MerkleTree<T: Digest> {
digest: T,
}
impl<T: Digest+Default> MerkleTree<T> {
pub fn new() -> MerkleTree<T> {
MerkleTree{ ..Default::default() }
}
}
main.rs:
extern crate digest;
extern crate sha2;
mod merkle_tree;
use sha2::{Digest, Sha256};
use merkle_tree::MerkleTree;
fn main() {
let mut mt = MerkleTree::<Sha256>::new();
println!("Hello, world!");
}
を私は次の出力を持っています:
error: no associated item named
new
found for typemerkle_tree::MerkleTree<sha2::Sha256>
in the current scope the traitdigest::Digest
is not implemented forsha2::Sha256
Cargo.tomlは:
[package]
name = "merkle_tree"
version = "0.1.0"
authors = ["Simon Prykhodko <[email protected]>"]
[dependencies]
digest = "0.4.0"
sha2 = "0.3.0"
ここで何が悪いのでしょうか?
@ababoなぜあなたは 'sha2 =" 0.3.0 "'を使用していますか?最新バージョンは「0.4.2」です。 – kennytm