瀏覽代碼

Get the default hasher indirectly

`DefaultHasher` wasn't stable until 1.13, at which point all the other
hashers were deprecated, so it's not easy for us to name a hasher type
to use for testing.  However, `RandomState` has been stable since 1.7,
and it implements `BuildHasher` that has a `Hasher` associated type.
Josh Stone 8 年之前
父節點
當前提交
1b895a8632
共有 3 個文件被更改,包括 9 次插入6 次删除
  1. 3 2
      bigint/src/lib.rs
  2. 3 2
      complex/src/lib.rs
  3. 3 2
      rational/src/lib.rs

+ 3 - 2
bigint/src/lib.rs

@@ -120,8 +120,9 @@ use std::hash;
 
 #[cfg(test)]
 fn hash<T: hash::Hash>(x: &T) -> u64 {
-    use std::hash::Hasher;
-    let mut hasher = std::collections::hash_map::DefaultHasher::new();
+    use std::hash::{BuildHasher, Hasher};
+    use std::collections::hash_map::RandomState;
+    let mut hasher = <RandomState as BuildHasher>::Hasher::new();
     x.hash(&mut hasher);
     hasher.finish()
 }

+ 3 - 2
complex/src/lib.rs

@@ -765,8 +765,9 @@ impl<T> serde::Deserialize for Complex<T> where
 
 #[cfg(test)]
 fn hash<T: hash::Hash>(x: &T) -> u64 {
-    use std::hash::Hasher;
-    let mut hasher = std::collections::hash_map::DefaultHasher::new();
+    use std::hash::{BuildHasher, Hasher};
+    use std::collections::hash_map::RandomState;
+    let mut hasher = <RandomState as BuildHasher>::Hasher::new();
     x.hash(&mut hasher);
     hasher.finish()
 }

+ 3 - 2
rational/src/lib.rs

@@ -670,8 +670,9 @@ impl RatioErrorKind {
 
 #[cfg(test)]
 fn hash<T: hash::Hash>(x: &T) -> u64 {
-    use std::hash::Hasher;
-    let mut hasher = std::collections::hash_map::DefaultHasher::new();
+    use std::hash::{BuildHasher, Hasher};
+    use std::collections::hash_map::RandomState;
+    let mut hasher = <RandomState as BuildHasher>::Hasher::new();
     x.hash(&mut hasher);
     hasher.finish()
 }