1
- use std:: hash:: { BuildHasher as _, Hash , Hasher as _ } ;
1
+ use std:: hash:: { BuildHasher as _, Hash } ;
2
2
use std:: ops:: Index ;
3
3
4
4
use hashbrown:: hash_table:: { Entry , HashTable } ;
@@ -126,11 +126,11 @@ impl<T: Hash + Eq> Interner<T> {
126
126
127
127
/// Intern `token` and return a the interned integer
128
128
pub fn intern ( & mut self , token : T ) -> Token {
129
- let hash = hash_one ( & self . hasher , & token) ;
129
+ let hash = self . hasher . hash_one ( & token) ;
130
130
match self . table . entry (
131
131
hash,
132
132
|& 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 ] ) ,
134
134
) {
135
135
Entry :: Occupied ( entry) => * entry. get ( ) ,
136
136
Entry :: Vacant ( entry) => {
@@ -155,14 +155,14 @@ impl<T: Hash + Eq> Interner<T> {
155
155
if retained <= erased {
156
156
self . table . clear ( ) ;
157
157
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) ;
159
159
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 ] )
161
161
} ) ;
162
162
}
163
163
} else {
164
164
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) ;
166
166
match self
167
167
. table
168
168
. find_entry ( hash, |token| token. 0 == ( retained + i) as u32 )
@@ -182,12 +182,3 @@ impl<T: Hash + Eq> Index<Token> for Interner<T> {
182
182
& self . tokens [ index. 0 as usize ]
183
183
}
184
184
}
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