From a40b971aaf64f9ba189ac07eebf1890d995ae2dc Mon Sep 17 00:00:00 2001 From: Steven Sheldon Date: Sun, 11 May 2014 03:49:09 -0700 Subject: [PATCH] Implement Mutable trait for StrBuf. --- src/libstd/strbuf.rs | 18 +++++++++++++++++- 1 file changed, 17 insertions(+), 1 deletion(-) diff --git a/src/libstd/strbuf.rs b/src/libstd/strbuf.rs index 8e05b2f527d08..2250244a3bb8a 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 for StrBuf { fn from_iter>(iterator: I) -> StrBuf { let mut buf = StrBuf::new(); @@ -298,6 +305,7 @@ impl ::hash::Hash 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(), ""); + } }