Skip to content

Commit b133275

Browse files
committed
Use std::hash::BuildHasher::hash_one
1 parent 9e90897 commit b133275

File tree

1 file changed

+6
-15
lines changed

1 file changed

+6
-15
lines changed

src/intern.rs

Lines changed: 6 additions & 15 deletions
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
1-
use std::hash::{BuildHasher as _, Hash, Hasher as _};
1+
use std::hash::{BuildHasher as _, Hash};
22
use std::ops::Index;
33

44
use hashbrown::hash_table::{Entry, HashTable};
@@ -126,11 +126,11 @@ impl<T: Hash + Eq> Interner<T> {
126126

127127
/// Intern `token` and return a the interned integer
128128
pub fn intern(&mut self, token: T) -> Token {
129-
let hash = hash_one(&self.hasher, &token);
129+
let hash = self.hasher.hash_one(&token);
130130
match self.table.entry(
131131
hash,
132132
|&it| self.tokens[it.0 as usize] == token,
133-
|&token| hash_one(&self.hasher, &self.tokens[token.0 as usize]),
133+
|&token| self.hasher.hash_one(&self.tokens[token.0 as usize]),
134134
) {
135135
Entry::Occupied(entry) => *entry.get(),
136136
Entry::Vacant(entry) => {
@@ -155,14 +155,14 @@ impl<T: Hash + Eq> Interner<T> {
155155
if retained <= erased {
156156
self.table.clear();
157157
for (i, token) in self.tokens[0..retained].iter().enumerate() {
158-
let hash = hash_one(&self.hasher, &token);
158+
let hash = self.hasher.hash_one(&token);
159159
self.table.insert_unique(hash, Token(i as u32), |&token| {
160-
hash_one(&self.hasher, &self.tokens[token.0 as usize])
160+
self.hasher.hash_one(&self.tokens[token.0 as usize])
161161
});
162162
}
163163
} else {
164164
for (i, token) in self.tokens[retained..].iter().enumerate() {
165-
let hash = hash_one(&self.hasher, &token);
165+
let hash = self.hasher.hash_one(&token);
166166
match self
167167
.table
168168
.find_entry(hash, |token| token.0 == (retained + i) as u32)
@@ -182,12 +182,3 @@ impl<T: Hash + Eq> Index<Token> for Interner<T> {
182182
&self.tokens[index.0 as usize]
183183
}
184184
}
185-
186-
// TODO: remove in favor of BuildHasher::hash_one once compilers older than 1.71
187-
// no longer need to be supported.
188-
// https://doc.rust-lang.org/std/hash/trait.BuildHasher.html#method.hash_one
189-
fn hash_one<T: Hash>(hasher_parameters: &RandomState, token: &T) -> u64 {
190-
let mut hasher = hasher_parameters.build_hasher();
191-
token.hash(&mut hasher);
192-
hasher.finish()
193-
}

0 commit comments

Comments
 (0)