about summary refs log tree commit diff
path: root/src
diff options
context:
space:
mode:
authorAdolfo OchagavĂ­a <aochagavia92@gmail.com>2014-06-07 15:01:44 +0200
committerAdolfo OchagavĂ­a <aochagavia92@gmail.com>2014-06-07 15:01:44 +0200
commitf1bff592b1d3dff14459374af930ae3fee6253ce (patch)
tree14e0fdf966dbb8eb3972444b008b23e36d696253 /src
parent8e9e484d7089590ce63bfe21723d7ee0c50be8f4 (diff)
downloadrust-f1bff592b1d3dff14459374af930ae3fee6253ce.tar.gz
rust-f1bff592b1d3dff14459374af930ae3fee6253ce.zip
Implement Show for DList
Diffstat (limited to 'src')
-rw-r--r--src/libcollections/dlist.rs25
1 files changed, 25 insertions, 0 deletions
diff --git a/src/libcollections/dlist.rs b/src/libcollections/dlist.rs
index 94c617b58e8..9d0e8e83698 100644
--- a/src/libcollections/dlist.rs
+++ b/src/libcollections/dlist.rs
@@ -24,6 +24,7 @@
 use core::prelude::*;
 
 use alloc::owned::Box;
+use core::fmt;
 use core::iter;
 use core::mem;
 use core::ptr;
@@ -608,6 +609,19 @@ impl<A: Clone> Clone for DList<A> {
     }
 }
 
+impl<A: fmt::Show> fmt::Show for DList<A> {
+    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 {
     use std::prelude::*;
@@ -1027,6 +1041,17 @@ mod tests {
         }
     }
 
+    #[test]
+    fn test_show() {
+        let list: DList<int> = range(0, 10).collect();
+        assert!(list.to_str().as_slice() == "[0, 1, 2, 3, 4, 5, 6, 7, 8, 9]");
+
+        let list: DList<&str> = vec!["just", "one", "test", "more"].iter()
+                                                                   .map(|&s| s)
+                                                                   .collect();
+        assert!(list.to_str().as_slice() == "[just, one, test, more]");
+    }
+
     #[cfg(test)]
     fn fuzz_test(sz: int) {
         let mut m: DList<int> = DList::new();