pub trait Hash:
Copy
+ Clone
+ PartialEq
+ Eq
+ PartialOrd
+ Ord
+ Hash
+ Debug
+ Display
+ LowerHex
+ Index<RangeFull, Output = [u8], Output = [u8], Output = [u8], Output = [u8], Output = u8>
+ Index<RangeFrom<usize>>
+ Index<RangeTo<usize>>
+ Index<Range<usize>>
+ Index<usize>
+ Borrow<[u8]> {
type Engine: HashEngine;
type Inner: FromHex;
const LEN: usize;
const DISPLAY_BACKWARD: bool = false;
// Required methods
fn from_engine(e: Self::Engine) -> Self;
fn from_slice(sl: &[u8]) -> Result<Self, Error>;
fn into_inner(self) -> Self::Inner;
fn as_inner(&self) -> &Self::Inner;
fn from_inner(inner: Self::Inner) -> Self;
fn all_zeros() -> Self;
// Provided methods
fn engine() -> Self::Engine { ... }
fn hash(data: &[u8]) -> Self { ... }
}
Expand description
Trait which applies to hashes of all types.
Required Associated Types§
type Engine: HashEngine
type Engine: HashEngine
A hashing engine which bytes can be serialized into. It is expected
to implement the io::Write
trait, and to never return errors under
any conditions.
Required Associated Constants§
Provided Associated Constants§
const DISPLAY_BACKWARD: bool = false
const DISPLAY_BACKWARD: bool = false
Flag indicating whether user-visible serializations of this hash
should be backward. For some reason Satoshi decided this should be
true for Sha256dHash
, so here we are.
Required Methods§
fn from_engine(e: Self::Engine) -> Self
fn from_engine(e: Self::Engine) -> Self
Produces a hash from the current state of a given engine.
fn from_slice(sl: &[u8]) -> Result<Self, Error>
fn from_slice(sl: &[u8]) -> Result<Self, Error>
Copies a byte slice into a hash object.
fn into_inner(self) -> Self::Inner
fn into_inner(self) -> Self::Inner
Unwraps the hash and returns the underlying byte array.
fn as_inner(&self) -> &Self::Inner
fn as_inner(&self) -> &Self::Inner
Unwraps the hash and returns a reference to the underlying byte array.
fn from_inner(inner: Self::Inner) -> Self
fn from_inner(inner: Self::Inner) -> Self
Constructs a hash from the underlying byte array.
fn all_zeros() -> Self
fn all_zeros() -> Self
Returns an all zero hash.
An all zeros hash is a made up construct because there is not a known input that can create it, however it is used in various places in Bitcoin e.g., the Bitcoin genesis block’s previous blockhash and the coinbase transaction’s outpoint txid.