From 949b55e58e8a26e5c05cc5350dee8017e7653ad5 Mon Sep 17 00:00:00 2001 From: Jorge Aparicio Date: Wed, 3 Dec 2014 02:22:41 -0500 Subject: [PATCH] libcollections: add commutative version of `Vec`/`String` addition --- src/libcollections/string.rs | 8 ++++++++ src/libcollections/vec.rs | 9 +++++++++ 2 files changed, 17 insertions(+) diff --git a/src/libcollections/string.rs b/src/libcollections/string.rs index 0e3d2f02ae9..f3a9e7b1867 100644 --- a/src/libcollections/string.rs +++ b/src/libcollections/string.rs @@ -874,6 +874,14 @@ impl<'a> Add<&'a str, String> for String { } } +#[cfg(not(stage0))] // NOTE(stage0): Remove cfg after a snapshot +impl<'a> Add for &'a str { + fn add(self, mut other: String) -> String { + other.push_str(self); + other + } +} + impl ops::Slice for String { #[inline] fn as_slice_<'a>(&'a self) -> &'a str { diff --git a/src/libcollections/vec.rs b/src/libcollections/vec.rs index 56cfa19e887..275825da3b5 100644 --- a/src/libcollections/vec.rs +++ b/src/libcollections/vec.rs @@ -1295,6 +1295,15 @@ impl<'a, T: Clone> Add<&'a [T], Vec> for Vec { } } +#[cfg(not(stage0))] // NOTE(stage0): Remove impl after a snapshot +impl<'a, T: Clone> Add, Vec> for &'a [T] { + #[inline] + fn add(self, mut rhs: Vec) -> Vec { + rhs.push_all(self); + rhs + } +} + #[unsafe_destructor] impl Drop for Vec { fn drop(&mut self) {