pub type Multihash = Multihash<64>;
Expand description
A Multihash with the same allocated size as the Multihashes produces by this derive.
Aliased Type§
struct Multihash { /* private fields */ }
Implementations
source§impl<const S: usize> Multihash<S>
impl<const S: usize> Multihash<S>
sourcepub const fn wrap(code: u64, input_digest: &[u8]) -> Result<Multihash<S>, Error>
pub const fn wrap(code: u64, input_digest: &[u8]) -> Result<Multihash<S>, Error>
Wraps the digest in a multihash.
sourcepub fn from_bytes(bytes: &[u8]) -> Result<Multihash<S>, Error>
pub fn from_bytes(bytes: &[u8]) -> Result<Multihash<S>, Error>
Parses a multihash from a bytes.
You need to make sure the passed in bytes have the correct length. The digest length
needs to match the size
value of the multihash.
sourcepub fn write<W>(&self, w: W) -> Result<(), Error>where
W: Write,
pub fn write<W>(&self, w: W) -> Result<(), Error>where
W: Write,
Writes a multihash to a byte stream.
sourcepub fn truncate(&self, size: u8) -> Multihash<S>
pub fn truncate(&self, size: u8) -> Multihash<S>
Truncates the multihash to the given size. It’s up to the caller to ensure that the new size is secure (cryptographically) to use.
If the new size is larger than the current size, this method does nothing.
use multihash::{Code, MultihashDigest};
let hash = Code::Sha3_256.digest(b"Hello world!").truncate(20);
sourcepub fn resize<const R: usize>(&self) -> Result<Multihash<R>, Error>
pub fn resize<const R: usize>(&self) -> Result<Multihash<R>, Error>
Resizes the backing multihash buffer. This function fails if the hash digest is larger than the target size.
use multihash::{Code, MultihashDigest, MultihashGeneric};
let hash = Code::Sha3_256.digest(b"Hello world!");
let large_hash: MultihashGeneric<32> = hash.resize().unwrap();
sourcepub fn into_inner(self) -> (u64, [u8; S], u8)
pub fn into_inner(self) -> (u64, [u8; S], u8)
Decomposes struct, useful when needing a Sized
array or moving all the data into another type
It is recommended to use digest()
code()
and size()
for most cases
use multihash::{Code, MultihashDigest};
struct Foo<const S: usize> {
arr: [u8; S],
len: usize,
}
let hash = Code::Sha3_256.digest(b"Hello world!");
let (.., arr, size) = hash.into_inner();
let foo = Foo { arr, len: size as usize };
Trait Implementations§
source§impl<const S: usize> Ord for Multihash<S>
impl<const S: usize> Ord for Multihash<S>
1.21.0 · source§fn max(self, other: Self) -> Selfwhere
Self: Sized,
fn max(self, other: Self) -> Selfwhere
Self: Sized,
source§impl<const A: usize, const B: usize> PartialEq<Multihash<B>> for Multihash<A>
impl<const A: usize, const B: usize> PartialEq<Multihash<B>> for Multihash<A>
source§impl<const S: usize> PartialOrd for Multihash<S>
impl<const S: usize> PartialOrd for Multihash<S>
1.0.0 · source§fn le(&self, other: &Rhs) -> bool
fn le(&self, other: &Rhs) -> bool
self
and other
) and is used by the <=
operator. Read more