diff --git a/src/lib.rs b/src/lib.rs
index 07e1bf50f8b1be741e51b2eda059de5232d928b2..e82a15649344ad12a639edab49d3fcc52731954b 100644
--- a/src/lib.rs
+++ b/src/lib.rs
@@ -12,7 +12,6 @@
 //! are O(highest integer key).
 
 #![cfg_attr(feature = "nightly", feature(drain, iter_order))]
-#![cfg_attr(all(feature = "nightly", test), feature(hash_default))]
 
 use self::Entry::*;
 
@@ -962,7 +961,7 @@ impl<V> DoubleEndedIterator for IntoIter<V> {
 mod test {
     use super::VecMap;
     use super::Entry::{Occupied, Vacant};
-    #[cfg(feature = "nightly")] use std::hash::{SipHasher, hash};
+    use std::hash::{Hash, Hasher, SipHasher};
 
     #[test]
     fn test_get_mut() {
@@ -1344,12 +1343,17 @@ mod test {
     }
 
     #[test]
-    #[cfg(feature = "nightly")]
     fn test_hash() {
+        fn hash<T: Hash>(t: &T) -> u64 {
+            let mut s = SipHasher::new();
+            t.hash(&mut s);
+            s.finish()
+        }
+
         let mut x = VecMap::new();
         let mut y = VecMap::new();
 
-        assert!(hash::<_, SipHasher>(&x) == hash::<_, SipHasher>(&y));
+        assert!(hash(&x) == hash(&y));
         x.insert(1, 'a');
         x.insert(2, 'b');
         x.insert(3, 'c');
@@ -1358,12 +1362,12 @@ mod test {
         y.insert(2, 'b');
         y.insert(1, 'a');
 
-        assert!(hash::<_, SipHasher>(&x) == hash::<_, SipHasher>(&y));
+        assert!(hash(&x) == hash(&y));
 
         x.insert(1000, 'd');
         x.remove(&1000);
 
-        assert!(hash::<_, SipHasher>(&x) == hash::<_, SipHasher>(&y));
+        assert!(hash(&x) == hash(&y));
     }
 
     #[test]