]> git.lizzy.rs Git - rust.git/commitdiff
Implement Show for RingBuf
authorAdolfo Ochagavía <aochagavia92@gmail.com>
Wed, 4 Jun 2014 14:15:04 +0000 (16:15 +0200)
committerAdolfo Ochagavía <aochagavia92@gmail.com>
Wed, 4 Jun 2014 14:40:30 +0000 (16:40 +0200)
src/libcollections/ringbuf.rs

index 0ca4177b7aa824873df26a3ddab2fcc72d092435..7b8d416c4fed268ce7da558cfeeedd91b1807635 100644 (file)
@@ -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 @@ fn extend<T: Iterator<A>>(&mut self, mut iterator: T) {
     }
 }
 
+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 @@ fn test_eq() {
         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]");
+    }
 }