Trait MultihashCode

Source
pub trait MultihashCode:
    TryFrom<u64>
    + Into<u64>
    + Send
    + Sync
    + Unpin
    + Copy
    + Eq
    + Debug
    + 'static {
    type AllocSize: Size;

    // Required methods
    fn digest(&self, input: &[u8]) -> Multihash<Self::AllocSize>;
    fn multihash_from_digest<'a, S, D>(
        digest: &'a D,
    ) -> Multihash<Self::AllocSize>
       where S: Size,
             D: Digest<S>,
             Self: From<&'a D>;
}
Expand description

Trait that implements hashing.

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

Required Associated Types§

Source

type AllocSize: Size

The maximum size a hash will allocate.

Required Methods§

Source

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

Calculate the hash of some input data.

§Example
// `Code` implements `MultihashCode`
use tiny_multihash::{Code, MultihashCode};

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

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

Create a multihash from an existing Digest.

§Example
use tiny_multihash::{Code, MultihashCode, 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);

Dyn Compatibility§

This trait is not dyn compatible.

In older versions of Rust, dyn compatibility was called "object safety", so this trait is not object safe.

Implementors§