about summary refs log tree commit diff
diff options
context:
space:
mode:
authorJeffrey Seyfried <jeffrey.seyfried@gmail.com>2016-06-29 00:39:49 +0000
committerJeffrey Seyfried <jeffrey.seyfried@gmail.com>2016-06-29 00:39:54 +0000
commita77a17963741d50ef992faf09dee6020aacfd0e6 (patch)
tree073aeb07cc569270ea02b106d7a8df7cdb831d40
parent2fda7d4a514cb5381a70ac279faff53bed22e395 (diff)
parent703d7b519e69daf03e34edcd1af2957e393414b5 (diff)
downloadrust-a77a17963741d50ef992faf09dee6020aacfd0e6.tar.gz
rust-a77a17963741d50ef992faf09dee6020aacfd0e6.zip
Rollup merge of #34305 - Aaronepower:master, r=alexcrichton
Added Default trait for Cow.

Adds a default implementation for Cow. Which is the Owned's default.
-rw-r--r--src/libcollections/borrow.rs11
1 files changed, 11 insertions, 0 deletions
diff --git a/src/libcollections/borrow.rs b/src/libcollections/borrow.rs
index 6ca0db68a88..37dbeb4eae1 100644
--- a/src/libcollections/borrow.rs
+++ b/src/libcollections/borrow.rs
@@ -15,6 +15,7 @@
 use core::clone::Clone;
 use core::cmp::{Eq, Ord, Ordering, PartialEq, PartialOrd};
 use core::convert::AsRef;
+use core::default::Default;
 use core::hash::{Hash, Hasher};
 use core::marker::Sized;
 use core::ops::Deref;
@@ -248,6 +249,16 @@ impl<'a, B: ?Sized> fmt::Display for Cow<'a, B>
     }
 }
 
+#[stable(feature = "default", since = "1.11.0")]
+impl<'a, B: ?Sized> Default for Cow<'a, B>
+    where B: ToOwned,
+          <B as ToOwned>::Owned: Default
+{
+    fn default() -> Cow<'a, B> {
+        Owned(<B as ToOwned>::Owned::default())
+    }
+}
+
 #[stable(feature = "rust1", since = "1.0.0")]
 impl<'a, B: ?Sized> Hash for Cow<'a, B> where B: Hash + ToOwned {
     #[inline]