@@ -5,7 +5,7 @@ use super::Entry::{Occupied, Vacant};
5
5
use super :: HashMap ;
6
6
use crate :: assert_matches:: assert_matches;
7
7
use crate :: cell:: RefCell ;
8
- use crate :: hash:: RandomState ;
8
+ use crate :: hash:: { BuildHasher , BuildHasherDefault , DefaultHasher , RandomState } ;
9
9
use crate :: test_helpers:: test_rng;
10
10
11
11
// https://github.com/rust-lang/rust/issues/62301
@@ -1124,6 +1124,26 @@ fn from_array() {
1124
1124
1125
1125
#[ test]
1126
1126
fn const_with_hasher ( ) {
1127
- const X : HashMap < ( ) , ( ) , ( ) > = HashMap :: with_hasher ( ( ) ) ;
1128
- assert_eq ! ( X . len( ) , 0 ) ;
1127
+ const X : HashMap < ( ) , ( ) , BuildHasherDefault < DefaultHasher > > =
1128
+ HashMap :: with_hasher ( BuildHasherDefault :: new ( ) ) ;
1129
+ let mut x = X ;
1130
+ assert_eq ! ( x. len( ) , 0 ) ;
1131
+ x. insert ( ( ) , ( ) ) ;
1132
+ assert_eq ! ( x. len( ) , 1 ) ;
1133
+
1134
+ // It *is* possible to do this without using the `BuildHasherDefault` type.
1135
+ struct MyBuildDefaultHasher ;
1136
+ impl BuildHasher for MyBuildDefaultHasher {
1137
+ type Hasher = DefaultHasher ;
1138
+
1139
+ fn build_hasher ( & self ) -> Self :: Hasher {
1140
+ DefaultHasher :: new ( )
1141
+ }
1142
+ }
1143
+
1144
+ const Y : HashMap < ( ) , ( ) , MyBuildDefaultHasher > = HashMap :: with_hasher ( MyBuildDefaultHasher ) ;
1145
+ let mut y = Y ;
1146
+ assert_eq ! ( y. len( ) , 0 ) ;
1147
+ y. insert ( ( ) , ( ) ) ;
1148
+ assert_eq ! ( y. len( ) , 1 ) ;
1129
1149
}
0 commit comments