diff --git a/src/fnv.rs b/src/fnv.rs index 0e5be07..8f20559 100644 --- a/src/fnv.rs +++ b/src/fnv.rs @@ -8,6 +8,18 @@ const PRIME: u32 = 0x1000193; /// Specifically this implements the [FNV-1a hash]. /// /// [FNV-1a hash]: https://en.wikipedia.org/wiki/Fowler%E2%80%93Noll%E2%80%93Vo_hash_function#FNV-1a_hash +/// +/// # Examples +/// +/// ``` +/// use core::hash::Hasher as _; +/// use hash32::{FnvHasher, Hasher as _}; +/// +/// let mut hasher: FnvHasher = Default::default(); +/// hasher.write(b"Hello, World!"); +/// +/// println!("Hash is {:x}!", hasher.finish32()); +/// ``` #[derive(Debug, Clone)] pub struct FnvHasher { state: u32, diff --git a/src/lib.rs b/src/lib.rs index 7c34a79..5dca551 100644 --- a/src/lib.rs +++ b/src/lib.rs @@ -57,6 +57,38 @@ //! //! This crate is guaranteed to compile on latest stable Rust. It *might* compile on older //! versions but that may change in any new patch release. +//! +//! # Examples +//! +//! ``` +//! use hash32::{FnvHasher, Hasher as _}; +//! +//! #[derive(Hash)] +//! struct Person { +//! id: u32, +//! name: &'static str, +//! phone: u64, +//! } +//! +//! let person1 = Person { +//! id: 5, +//! name: "Janet", +//! phone: 555_666_7777, +//! }; +//! let person2 = Person { +//! id: 5, +//! name: "Bob", +//! phone: 555_666_7777, +//! }; +//! +//! assert!(calculate_hash(&person1) != calculate_hash(&person2)); +//! +//! fn calculate_hash(t: &T) -> u32 { +//! let mut fnv: FnvHasher = Default::default(); +//! t.hash(&mut fnv); +//! fnv.finish32() +//! } +//! ``` #![warn( missing_docs, @@ -86,7 +118,7 @@ mod murmur3; /// # Examples /// /// ``` -/// use core::hash::{Hasher as _}; +/// use core::hash::Hasher as _; /// use hash32::{FnvHasher, Hasher as _}; /// /// let mut hasher: FnvHasher = Default::default(); diff --git a/src/murmur3.rs b/src/murmur3.rs index 781a690..8f1542e 100644 --- a/src/murmur3.rs +++ b/src/murmur3.rs @@ -4,6 +4,18 @@ use core::slice; use crate::Hasher as _; /// 32-bit `MurmurHash3` hasher +/// +/// # Examples +/// +/// ``` +/// use core::hash::Hasher as _; +/// use hash32::{Hasher as _, Murmur3Hasher}; +/// +/// let mut hasher: Murmur3Hasher = Default::default(); +/// hasher.write(b"Hello, World!"); +/// +/// println!("Hash is {:x}!", hasher.finish32()); +/// ``` #[derive(Debug, Clone)] pub struct Murmur3Hasher { buf: Buffer,