about summary refs log tree commit diff
path: root/src/libstd
diff options
context:
space:
mode:
authorSteven Sheldon <steven@sasheldon.com>2014-05-11 03:49:09 -0700
committerSteven Sheldon <steven@sasheldon.com>2014-05-11 03:49:09 -0700
commita40b971aaf64f9ba189ac07eebf1890d995ae2dc (patch)
treeb805538743666c5a2babdb0ccd2b8cb4fab481b0 /src/libstd
parentadb8b0b230d5e5c79b4f873825b3d3cff8d1bc8f (diff)
downloadrust-a40b971aaf64f9ba189ac07eebf1890d995ae2dc.tar.gz
rust-a40b971aaf64f9ba189ac07eebf1890d995ae2dc.zip
Implement Mutable trait for StrBuf.
Diffstat (limited to 'src/libstd')
-rw-r--r--src/libstd/strbuf.rs18
1 files changed, 17 insertions, 1 deletions
diff --git a/src/libstd/strbuf.rs b/src/libstd/strbuf.rs
index 8e05b2f527d..2250244a3bb 100644
--- a/src/libstd/strbuf.rs
+++ b/src/libstd/strbuf.rs
@@ -13,7 +13,7 @@
 use c_vec::CVec;
 use cast;
 use char::Char;
-use container::Container;
+use container::{Container, Mutable};
 use fmt;
 use io::Writer;
 use iter::{Extendable, FromIterator, Iterator, range};
@@ -245,6 +245,13 @@ impl Container for StrBuf {
     }
 }
 
+impl Mutable for StrBuf {
+    #[inline]
+    fn clear(&mut self) {
+        self.vec.clear()
+    }
+}
+
 impl FromIterator<char> for StrBuf {
     fn from_iter<I:Iterator<char>>(iterator: I) -> StrBuf {
         let mut buf = StrBuf::new();
@@ -298,6 +305,7 @@ impl<H:Writer> ::hash::Hash<H> for StrBuf {
 #[cfg(test)]
 mod tests {
     extern crate test;
+    use container::{Container, Mutable};
     use self::test::Bencher;
     use str::{Str, StrSlice};
     use super::StrBuf;
@@ -380,4 +388,12 @@ mod tests {
         let mut s = StrBuf::from_str("\u00FC"); // ΓΌ
         s.truncate(1);
     }
+
+    #[test]
+    fn test_str_clear() {
+        let mut s = StrBuf::from_str("12345");
+        s.clear();
+        assert_eq!(s.len(), 0);
+        assert_eq!(s.as_slice(), "");
+    }
 }