core::hash::Hasher - Rust
Description: API documentation for the Rust `Hasher` trait in crate `core`.
Keywords: rust, rustlang, rust-lang, Hasher

# 1.0.0[−][src]Trait core::hash::Hasher

    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());Run

## Required methods

### `fn finish(&self) -> u64`

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());Run

### `fn write(&mut self, bytes: &[u8])`

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());Run

Loading content...

## Provided methods

### `fn write_u8(&mut self, i: u8)`1.3.0

Writes a single `u8` into this hasher.

### `fn write_u16(&mut self, i: u16)`1.3.0

Writes a single `u16` into this hasher.

### `fn write_u32(&mut self, i: u32)`1.3.0

Writes a single `u32` into this hasher.

### `fn write_u64(&mut self, i: u64)`1.3.0

Writes a single `u64` into this hasher.

### `fn write_u128(&mut self, i: u128)`1.26.0

Writes a single `u128` into this hasher.

### `fn write_usize(&mut self, i: usize)`1.3.0

Writes a single `usize` into this hasher.

### `fn write_i8(&mut self, i: i8)`1.3.0

Writes a single `i8` into this hasher.

### `fn write_i16(&mut self, i: i16)`1.3.0

Writes a single `i16` into this hasher.

### `fn write_i32(&mut self, i: i32)`1.3.0

Writes a single `i32` into this hasher.

### `fn write_i64(&mut self, i: i64)`1.3.0

Writes a single `i64` into this hasher.

### `fn write_i128(&mut self, i: i128)`1.26.0

Writes a single `i128` into this hasher.

### `fn write_isize(&mut self, i: isize)`1.3.0

Writes a single `isize` into this hasher.

Loading content...

## Implementors

### `impl Hasher for SipHasher`[src]

#### `fn write(&mut self, msg: &[u8])`[src]

#### `fn finish(&self) -> u64`[src]

### `impl<'_, H: Hasher + ?Sized> Hasher for &'_ mut H`[src]

#### `fn finish(&self) -> u64`[src]

#### `fn write(&mut self, bytes: &[u8])`[src]

#### `fn write_u8(&mut self, i: u8)`[src]

#### `fn write_u16(&mut self, i: u16)`[src]

#### `fn write_u32(&mut self, i: u32)`[src]

#### `fn write_u64(&mut self, i: u64)`[src]

#### `fn write_u128(&mut self, i: u128)`[src]

#### `fn write_usize(&mut self, i: usize)`[src]

#### `fn write_i8(&mut self, i: i8)`[src]

#### `fn write_i16(&mut self, i: i16)`[src]

#### `fn write_i32(&mut self, i: i32)`[src]

#### `fn write_i64(&mut self, i: i64)`[src]

#### `fn write_i128(&mut self, i: i128)`[src]

#### `fn write_isize(&mut self, i: isize)`[src]

Loading content...