about summary refs log tree commit diff
path: root/src
diff options
context:
space:
mode:
Diffstat (limited to 'src')
-rw-r--r--src/libcollections/string.rs17
1 files changed, 17 insertions, 0 deletions
diff --git a/src/libcollections/string.rs b/src/libcollections/string.rs
index 76f53c9b257..6d1fc43a4f1 100644
--- a/src/libcollections/string.rs
+++ b/src/libcollections/string.rs
@@ -352,6 +352,14 @@ impl<'a, S: Str> Equiv<S> for String {
     }
 }
 
+impl<S: Str> Add<S, String> for String {
+    fn add(&self, other: &S) -> String {
+        let mut s = self.to_string();
+        s.push_str(other.as_slice());
+        return s;
+    }
+}
+
 #[cfg(test)]
 mod tests {
     use std::prelude::*;
@@ -469,4 +477,13 @@ mod tests {
         assert_eq!(s.len(), 0);
         assert_eq!(s.as_slice(), "");
     }
+
+    #[test]
+    fn test_str_add() {
+        let a = String::from_str("12345");
+        let b = a + "2";
+        let b = b + String::from_str("2");
+        assert_eq!(b.len(), 7);
+        assert_eq!(b.as_slice(), "1234522");
+    }
 }