Trait Hash
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 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 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 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.
Provided Methods§
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.