Adjust tests to build with rustc 0.70

This patch is based in part on reverts of upstream commits
b328ee7df4dd772922f084600aa7cea39218b694 and b9bcbad3c094042f79f1a45189ec0edbb8f9f322

--- a/tests/test.rs
+++ b/tests/test.rs
@@ -36,9 +36,7 @@
 #[cfg(feature = "raw_value")]
 use std::collections::HashMap;
 use std::fmt::{self, Debug};
-use std::hash::BuildHasher;
-#[cfg(feature = "raw_value")]
-use std::hash::{Hash, Hasher};
+use std::hash::{BuildHasher, Hash, Hasher};
 use std::io;
 use std::iter;
 use std::marker::PhantomData;
@@ -2527,16 +2525,21 @@
 
 #[test]
 fn hash_positive_and_negative_zero() {
-    let rand = std::hash::RandomState::new();
+    let rand = std::collections::hash_map::RandomState::new();
+    let hash = |obj: Number| -> u64 {
+        let mut hasher = rand.build_hasher();
+        obj.hash(&mut hasher);
+        hasher.finish()
+    };
 
     let k1 = serde_json::from_str::<Number>("0.0").unwrap();
     let k2 = serde_json::from_str::<Number>("-0.0").unwrap();
     if cfg!(feature = "arbitrary_precision") {
         assert_ne!(k1, k2);
-        assert_ne!(rand.hash_one(k1), rand.hash_one(k2));
+        assert_ne!(hash(k1), hash(k2));
     } else {
         assert_eq!(k1, k2);
-        assert_eq!(rand.hash_one(k1), rand.hash_one(k2));
+        assert_eq!(hash(k1), hash(k2));
     }
 }
 
