highway

Trait HighwayHash

Source
pub trait HighwayHash: Sized {
    // Required methods
    fn append(&mut self, data: &[u8]);
    fn finalize64(self) -> u64;
    fn finalize128(self) -> [u64; 2];
    fn finalize256(self) -> [u64; 4];
    fn checkpoint(&self) -> [u8; 164];

    // Provided methods
    fn hash64(self, data: &[u8]) -> u64 { ... }
    fn hash128(self, data: &[u8]) -> [u64; 2] { ... }
    fn hash256(self, data: &[u8]) -> [u64; 4] { ... }
}
Expand description

The common set of methods for hashing data.

Required Methods§

Source

fn append(&mut self, data: &[u8])

Adds data to be hashed. If it is important, the performance characteristics of this function differs depending on the amount of data previously hashed and the amount of data to be hashed. For instance, if one appends 50, 1 byte slices then appending the 32nd byte will have a performance outlier as the internal 32 byte block is complete and internally processed.

Source

fn finalize64(self) -> u64

Consumes the hasher to return the 64bit hash

Source

fn finalize128(self) -> [u64; 2]

Consumes the hasher to return the 128bit hash

Source

fn finalize256(self) -> [u64; 4]

Consumes the hasher to return the 256bit hash

Source

fn checkpoint(&self) -> [u8; 164]

Serialize the hasher state to be persisted or resumed by another hasher

Note: At this time, the checkpoint format and API should be considered experimental. The format may change in future versions.

Provided Methods§

Source

fn hash64(self, data: &[u8]) -> u64

Convenience function for hashing all data in a single call and receiving a 64bit hash. Results are equivalent to appending the data manually.

Source

fn hash128(self, data: &[u8]) -> [u64; 2]

Convenience function for hashing all data in a single call and receiving a 128bit hash. Results are equivalent to appending the data manually.

Source

fn hash256(self, data: &[u8]) -> [u64; 4]

Convenience function for hashing all data in a single call and receiving a 256bit hash. Results are equivalent to appending the data manually.

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§