From c1e96ded1246e900713b9fcb4be73c7e28e4d674 Mon Sep 17 00:00:00 2001 From: Alex Martens Date: Fri, 4 Apr 2025 20:01:46 -0700 Subject: [PATCH 1/2] Hashers: Add examples --- src/fnv.rs | 12 ++++++++++++ src/lib.rs | 2 +- src/murmur3.rs | 12 ++++++++++++ 3 files changed, 25 insertions(+), 1 deletion(-) 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..2bace53 100644 --- a/src/lib.rs +++ b/src/lib.rs @@ -86,7 +86,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, From d04e1d9b82a5af60d8c8270f294e602b3af7d0fa Mon Sep 17 00:00:00 2001 From: Alex Martens Date: Fri, 4 Apr 2025 20:03:51 -0700 Subject: [PATCH 2/2] lib.rs: add example This is adapted from the example in std::hash. --- src/lib.rs | 32 ++++++++++++++++++++++++++++++++ 1 file changed, 32 insertions(+) diff --git a/src/lib.rs b/src/lib.rs index 2bace53..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,