This adds an implementation of Add for String where the rhs is <S: Str>. The
other half of adding strings is where the lhs is <S: Str>, but coherence and
the libcore separation currently prevent that.
}
}
+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::*;
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");
+ }
}