@@ -1897,18 +1897,18 @@ impl<K, V, S, A: Allocator + Clone> HashMap<K, V, S, A> {
1897
1897
/// # Examples
1898
1898
///
1899
1899
/// ```
1900
- /// use hashbrown::{HashMap, hash_map::RawEntryMut};
1900
+ /// use core::hash::{BuildHasher, Hash};
1901
+ /// use hashbrown::hash_map::{HashMap, RawEntryMut};
1901
1902
///
1902
1903
/// let mut map = HashMap::new();
1903
1904
/// map.extend([("a", 100), ("b", 200), ("c", 300)]);
1904
1905
///
1905
- /// let compute_hash = |map: &HashMap<&str, i32>, k: &str| -> u64 {
1906
- /// use core::hash::{BuildHasher, Hash, Hasher};
1907
- ///
1908
- /// let mut hasher = map.hasher().build_hasher();
1909
- /// k.hash(&mut hasher);
1910
- /// hasher.finish()
1911
- /// };
1906
+ /// fn compute_hash<K: Hash + ?Sized, S: BuildHasher>(hash_builder: &S, key: &K) -> u64 {
1907
+ /// use core::hash::Hasher;
1908
+ /// let mut state = hash_builder.build_hasher();
1909
+ /// key.hash(&mut state);
1910
+ /// state.finish()
1911
+ /// }
1912
1912
///
1913
1913
/// // Existing key (insert and update)
1914
1914
/// match map.raw_entry_mut().from_key(&"a") {
@@ -1926,7 +1926,7 @@ impl<K, V, S, A: Allocator + Clone> HashMap<K, V, S, A> {
1926
1926
/// assert_eq!(map.len(), 3);
1927
1927
///
1928
1928
/// // Existing key (take)
1929
- /// let hash = compute_hash(& map, &"c");
1929
+ /// let hash = compute_hash(map.hasher() , &"c");
1930
1930
/// match map.raw_entry_mut().from_key_hashed_nocheck(hash, &"c") {
1931
1931
/// RawEntryMut::Vacant(_) => unreachable!(),
1932
1932
/// RawEntryMut::Occupied(view) => {
@@ -1938,7 +1938,7 @@ impl<K, V, S, A: Allocator + Clone> HashMap<K, V, S, A> {
1938
1938
///
1939
1939
/// // Nonexistent key (insert and update)
1940
1940
/// let key = "d";
1941
- /// let hash = compute_hash(& map, &key);
1941
+ /// let hash = compute_hash(map.hasher() , &key);
1942
1942
/// match map.raw_entry_mut().from_hash(hash, |q| *q == key) {
1943
1943
/// RawEntryMut::Occupied(_) => unreachable!(),
1944
1944
/// RawEntryMut::Vacant(view) => {
@@ -1983,21 +1983,21 @@ impl<K, V, S, A: Allocator + Clone> HashMap<K, V, S, A> {
1983
1983
/// # Examples
1984
1984
///
1985
1985
/// ```
1986
+ /// use core::hash::{BuildHasher, Hash};
1986
1987
/// use hashbrown::HashMap;
1987
1988
///
1988
1989
/// let mut map = HashMap::new();
1989
1990
/// map.extend([("a", 100), ("b", 200), ("c", 300)]);
1990
1991
///
1991
- /// let compute_hash = |map: &HashMap<&str, i32>, k: &str| -> u64 {
1992
- /// use core::hash::{BuildHasher, Hash, Hasher};
1993
- ///
1994
- /// let mut hasher = map.hasher().build_hasher();
1995
- /// k.hash(&mut hasher);
1996
- /// hasher.finish()
1997
- /// };
1992
+ /// fn compute_hash<K: Hash + ?Sized, S: BuildHasher>(hash_builder: &S, key: &K) -> u64 {
1993
+ /// use core::hash::Hasher;
1994
+ /// let mut state = hash_builder.build_hasher();
1995
+ /// key.hash(&mut state);
1996
+ /// state.finish()
1997
+ /// }
1998
1998
///
1999
1999
/// for k in ["a", "b", "c", "d", "e", "f"] {
2000
- /// let hash = compute_hash(& map, k);
2000
+ /// let hash = compute_hash(map.hasher() , k);
2001
2001
/// let v = map.get(&k).cloned();
2002
2002
/// let kv = v.as_ref().map(|v| (&k, v));
2003
2003
///
0 commit comments