]> git.lizzy.rs Git - rust.git/commitdiff
Add `Cow::from` for `Vec` and slices
authorTobias Bucher <tobiasbucher5991@gmail.com>
Wed, 3 Feb 2016 12:57:02 +0000 (13:57 +0100)
committerTobias Bucher <tobiasbucher5991@gmail.com>
Wed, 3 Feb 2016 19:45:18 +0000 (20:45 +0100)
Fixes #31354.

src/libcollections/vec.rs

index a49b7304643ccaa2e9c5fba8301242dc9371bdad..805d9a9807a33172c7ed3b8c9cccb978598d70c1 100644 (file)
@@ -1505,6 +1505,20 @@ fn from(s: &'a str) -> Vec<u8> {
 // Clone-on-write
 ////////////////////////////////////////////////////////////////////////////////
 
+#[stable(feature = "cow_from_vec", since = "1.7.0")]
+impl<'a, T: Clone> From<&'a [T]> for Cow<'a, [T]> {
+    fn from(s: &'a [T]) -> Cow<'a, [T]> {
+        Cow::Borrowed(s)
+    }
+}
+
+#[stable(feature = "cow_from_vec", since = "1.7.0")]
+impl<'a, T: Clone> From<Vec<T>> for Cow<'a, [T]> {
+    fn from(v: Vec<T>) -> Cow<'a, [T]> {
+        Cow::Owned(v)
+    }
+}
+
 #[stable(feature = "rust1", since = "1.0.0")]
 impl<'a, T> FromIterator<T> for Cow<'a, [T]> where T: Clone {
     fn from_iter<I: IntoIterator<Item = T>>(it: I) -> Cow<'a, [T]> {