Trait libipld::cid::multihash::MultihashDigest[][src]

pub trait MultihashDigest: 'static + TryFrom<u64> + Into<u64> + Send + Sync + Unpin + Copy + Eq + Debug {
    type AllocSize: Size;
    fn digest(&self, input: &[u8]) -> Multihash<Self::AllocSize>;
fn multihash_from_digest<'a, S, D>(
        digest: &'a D
    ) -> Multihash<Self::AllocSize>
    where
        Self: From<&'a D>,
        S: Size,
        D: Digest<S>
; }
Expand description

Trait that implements hashing.

It is usually implemented by a custom code table enum that derives the Multihash derive.

Associated Types

type AllocSize: Size[src]

The maximum size a hash will allocate.

Required methods

fn digest(&self, input: &[u8]) -> Multihash<Self::AllocSize>[src]

Calculate the hash of some input data.

Example

// `Code` implements `MultihashDigest`
use multihash::{Code, MultihashDigest};

let hash = Code::Sha3_256.digest(b"Hello world!");
println!("{:02x?}", hash);

fn multihash_from_digest<'a, S, D>(digest: &'a D) -> Multihash<Self::AllocSize> where
    Self: From<&'a D>,
    S: Size,
    D: Digest<S>, 
[src]

Create a multihash from an existing Digest.

Example

use multihash::{Code, MultihashDigest, Sha3_256, StatefulHasher};

let mut hasher = Sha3_256::default();
hasher.update(b"Hello world!");
let hash = Code::multihash_from_digest(&hasher.finalize());
println!("{:02x?}", hash);

Implementors

impl MultihashDigest for Code[src]

type AllocSize = UInt<UInt<UInt<UInt<UInt<UInt<UInt<UTerm, B1>, B0>, B0>, B0>, B0>, B0>, B0>

pub fn digest(
    &self,
    input: &[u8]
) -> Multihash<UInt<UInt<UInt<UInt<UInt<UInt<UInt<UTerm, B1>, B0>, B0>, B0>, B0>, B0>, B0>>
[src]

pub fn multihash_from_digest<'a, S, D>(
    digest: &'a D
) -> Multihash<UInt<UInt<UInt<UInt<UInt<UInt<UInt<UTerm, B1>, B0>, B0>, B0>, B0>, B0>, B0>> where
    S: Size,
    D: Digest<S>,
    Code: From<&'a D>, 
[src]