Implement Default on Map
authorChris Morgan <me@chrismorgan.info>
committerChris Morgan <me@chrismorgan.info>
It was implemented on RawMap, and I’m not sure quite why it wasn’t
implemented on Map. I can’t think of any reason *not* to, though, so we
might as well.

Closes #30. Thanks to Maxwell Koo <mjkoo90@gmail.com> for the fix.
CHANGELOG.md
src/lib.rs
src/raw.rs

index 9a968dcb6cb743a119e1164c16d330633ff5e404..9691d8ef18a05a70188b58a08d9459a1a9fa3892 100644 (file)
@@ -5,6 +5,8 @@
   don’t signify). Technically a [breaking-change], but it was something for
   development only, so I’m not in the slightest bit concerned by it.
 
+- Implement `Default` on `Map` (not just on `RawMap`)
+
 I don’t plan for there to be any real changes from 0.12.1;
 it should be just a bit of housecleaning and a version bump.
 
index bcd5c231a4e0d75e156974b833835dd68657a179..de03fb6c74d0a7ea45c47cc8fcf717b6188c4d20 100644 (file)
@@ -75,6 +75,13 @@ macro_rules! impl_common_methods {
                 self.$field.clear()
             }
         }
+
+        impl<A: ?Sized + UncheckedAnyExt> Default for $t<A> {
+            #[inline]
+            fn default() -> $t<A> {
+                $t::new()
+            }
+        }
     }
 }
 
@@ -389,6 +396,12 @@ mod tests {
     test_entry!(test_entry_any, AnyMap);
     test_entry!(test_entry_cloneany, Map<CloneAny>);
 
+    #[test]
+    fn test_default() {
+        let map: AnyMap = Default::default();
+        assert_eq!(map.len(), 0);
+    }
+
     #[test]
     fn test_clone() {
         let mut map: Map<CloneAny> = Map::new();
index 17c3869c9153be5d559d1610829fe5db853aca1c..07dccf8d248ab7f7655b07af79d918a245f02f35 100644 (file)
@@ -70,13 +70,6 @@ impl<A: ?Sized + UncheckedAnyExt> Clone for RawMap<A> where Box<A>: Clone {
     }
 }
 
-impl<A: ?Sized + UncheckedAnyExt> Default for RawMap<A> {
-    #[inline]
-    fn default() -> RawMap<A> {
-        RawMap::new()
-    }
-}
-
 impl_common_methods! {
     field: RawMap.inner;
     new() => HashMap::with_hasher(Default::default());