Trait std_prelude::Hasher1.0.0 [] [src]

pub trait Hasher {
    fn finish(&self) -> u64;
fn write(&mut self, bytes: &[u8]); fn write_u8(&mut self, i: u8) { ... }
fn write_u16(&mut self, i: u16) { ... }
fn write_u32(&mut self, i: u32) { ... }
fn write_u64(&mut self, i: u64) { ... }
fn write_u128(&mut self, i: u128) { ... }
fn write_usize(&mut self, i: usize) { ... }
fn write_i8(&mut self, i: i8) { ... }
fn write_i16(&mut self, i: i16) { ... }
fn write_i32(&mut self, i: i32) { ... }
fn write_i64(&mut self, i: i64) { ... }
fn write_i128(&mut self, i: i128) { ... }
fn write_isize(&mut self, i: isize) { ... } }

A trait for hashing an arbitrary stream of bytes.

Instances of Hasher usually represent state that is changed while hashing data.

Hasher provides a fairly basic interface for retrieving the generated hash (with finish), and writing integers as well as slices of bytes into an instance (with write and write_u8 etc.). Most of the time, Hasher instances are used in conjunction with the Hash trait.

Examples

use std::collections::hash_map::DefaultHasher;
use std::hash::Hasher;

let mut hasher = DefaultHasher::new();

hasher.write_u32(1989);
hasher.write_u8(11);
hasher.write_u8(9);
hasher.write(b"Huh?");

println!("Hash is {:x}!", hasher.finish());

Required Methods

Returns the hash value for the values written so far.

Despite its name, the method does not reset the hasher’s internal state. Additional [write]s will continue from the current value. If you need to start a fresh hash value, you will have to create a new hasher.

Examples

use std::collections::hash_map::DefaultHasher;
use std::hash::Hasher;

let mut hasher = DefaultHasher::new();
hasher.write(b"Cool!");

println!("Hash is {:x}!", hasher.finish());

Writes some data into this Hasher.

Examples

use std::collections::hash_map::DefaultHasher;
use std::hash::Hasher;

let mut hasher = DefaultHasher::new();
let data = [0x01, 0x23, 0x45, 0x67, 0x89, 0xab, 0xcd, 0xef];

hasher.write(&data);

println!("Hash is {:x}!", hasher.finish());

Provided Methods

Writes a single u8 into this hasher.

Writes a single u16 into this hasher.

Writes a single u32 into this hasher.

Writes a single u64 into this hasher.

🔬 This is a nightly-only experimental API. (i128)

Writes a single u128 into this hasher.

Writes a single usize into this hasher.

Writes a single i8 into this hasher.

Writes a single i16 into this hasher.

Writes a single i32 into this hasher.

Writes a single i64 into this hasher.

🔬 This is a nightly-only experimental API. (i128)

Writes a single i128 into this hasher.

Writes a single isize into this hasher.

Implementations on Foreign Types

impl<'a, H> Hasher for &'a mut H where
    H: Hasher + ?Sized
[src]

[src]

[src]

[src]

[src]

[src]

[src]

[src]

🔬 This is a nightly-only experimental API. (i128)

[src]

[src]

[src]

[src]

[src]

[src]

🔬 This is a nightly-only experimental API. (i128)

[src]

impl Hasher for SipHasher13
[src]

[src]

[src]

1.3.0
[src]

1.3.0
[src]

1.3.0
[src]

1.3.0
[src]

[src]

🔬 This is a nightly-only experimental API. (i128)

1.3.0
[src]

1.3.0
[src]

1.3.0
[src]

1.3.0
[src]

1.3.0
[src]

[src]

🔬 This is a nightly-only experimental API. (i128)

1.3.0
[src]

impl Hasher for SipHasher
[src]

[src]

[src]

1.3.0
[src]

1.3.0
[src]

1.3.0
[src]

1.3.0
[src]

[src]

🔬 This is a nightly-only experimental API. (i128)

1.3.0
[src]

1.3.0
[src]

1.3.0
[src]

1.3.0
[src]

1.3.0
[src]

[src]

🔬 This is a nightly-only experimental API. (i128)

1.3.0
[src]

impl Hasher for SipHasher24
[src]

[src]

[src]

1.3.0
[src]

1.3.0
[src]

1.3.0
[src]

1.3.0
[src]

[src]

🔬 This is a nightly-only experimental API. (i128)

1.3.0
[src]

1.3.0
[src]

1.3.0
[src]

1.3.0
[src]

1.3.0
[src]

[src]

🔬 This is a nightly-only experimental API. (i128)

1.3.0
[src]

impl<T> Hasher for Box<T> where
    T: Hasher + ?Sized
[src]

[src]

[src]

[src]

[src]

[src]

[src]

[src]

🔬 This is a nightly-only experimental API. (i128)

[src]

[src]

[src]

[src]

[src]

[src]

🔬 This is a nightly-only experimental API. (i128)

[src]

impl Hasher for DefaultHasher
[src]

[src]

[src]

1.3.0
[src]

1.3.0
[src]

1.3.0
[src]

1.3.0
[src]

[src]

🔬 This is a nightly-only experimental API. (i128)

1.3.0
[src]

1.3.0
[src]

1.3.0
[src]

1.3.0
[src]

1.3.0
[src]

[src]

🔬 This is a nightly-only experimental API. (i128)

1.3.0
[src]

Implementors