about summary refs log tree commit diff
path: root/src
diff options
context:
space:
mode:
authorbors <bors@rust-lang.org>2014-06-05 05:11:54 -0700
committerbors <bors@rust-lang.org>2014-06-05 05:11:54 -0700
commita7ac6a4eb707fd90dfbc2b2f84c7fed7faec5d90 (patch)
tree124ed6f71aa183120b2ac303d715e213dbb10c83 /src
parentf2821f2c29a4b8cb8b8a4995213e74c799a80fc6 (diff)
parent8e4e3abb1d0a3008d46fd56bba03dc20a81e9481 (diff)
downloadrust-a7ac6a4eb707fd90dfbc2b2f84c7fed7faec5d90.tar.gz
rust-a7ac6a4eb707fd90dfbc2b2f84c7fed7faec5d90.zip
auto merge of #14642 : aochagavia/rust/pr, r=alexcrichton
The contents of a `RingBuf` are shown in the same way as the contents of a `Vector`. See the tests for examples.
Diffstat (limited to 'src')
-rw-r--r--src/libcollections/ringbuf.rs26
1 files changed, 26 insertions, 0 deletions
diff --git a/src/libcollections/ringbuf.rs b/src/libcollections/ringbuf.rs
index 0ca4177b7aa..7b8d416c4fe 100644
--- a/src/libcollections/ringbuf.rs
+++ b/src/libcollections/ringbuf.rs
@@ -14,6 +14,8 @@
 //! collections::deque::Deque`.
 
 use std::cmp;
+use std::fmt;
+use std::fmt::Show;
 use std::iter::RandomAccessIterator;
 
 use deque::Deque;
@@ -391,6 +393,19 @@ impl<A> Extendable<A> for RingBuf<A> {
     }
 }
 
+impl<T: Show> Show for RingBuf<T> {
+    fn fmt(&self, f: &mut fmt::Formatter) -> fmt::Result {
+        try!(write!(f, "["));
+
+        for (i, e) in self.iter().enumerate() {
+            if i != 0 { try!(write!(f, ", ")); }
+            try!(write!(f, "{}", *e));
+        }
+
+        write!(f, "]")
+    }
+}
+
 #[cfg(test)]
 mod tests {
     extern crate test;
@@ -819,4 +834,15 @@ mod tests {
         e.clear();
         assert!(e == RingBuf::new());
     }
+
+    #[test]
+    fn test_show() {
+        let ringbuf: RingBuf<int> = range(0, 10).collect();
+        assert!(format!("{}", ringbuf).as_slice() == "[0, 1, 2, 3, 4, 5, 6, 7, 8, 9]");
+
+        let ringbuf: RingBuf<&str> = vec!["just", "one", "test", "more"].iter()
+                                                                        .map(|&s| s)
+                                                                        .collect();
+        assert!(format!("{}", ringbuf).as_slice() == "[just, one, test, more]");
+    }
 }