about summary refs log tree commit diff
path: root/src
diff options
context:
space:
mode:
authorbors <bors@rust-lang.org>2014-06-07 15:31:44 -0700
committerbors <bors@rust-lang.org>2014-06-07 15:31:44 -0700
commitfa1832800a9b0781d48f9f66facdab201d62f483 (patch)
tree880824fa650164650a2e0bf34448f7bcee4f0ce1 /src
parent01eb0ce1227e3c7c2c32832508ea2930bd2cbb62 (diff)
parent9731c28e116943220b397d3131273344f0750913 (diff)
downloadrust-fa1832800a9b0781d48f9f66facdab201d62f483.tar.gz
rust-fa1832800a9b0781d48f9f66facdab201d62f483.zip
auto merge of #14725 : aochagavia/rust/show, r=alexcrichton
Diffstat (limited to 'src')
-rw-r--r--src/libcollections/dlist.rs25
-rw-r--r--src/libcollections/smallintmap.rs27
2 files changed, 52 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();
diff --git a/src/libcollections/smallintmap.rs b/src/libcollections/smallintmap.rs
index f3118181bdc..45584dd4b28 100644
--- a/src/libcollections/smallintmap.rs
+++ b/src/libcollections/smallintmap.rs
@@ -17,6 +17,7 @@
 
 use core::prelude::*;
 
+use core::fmt;
 use core::iter::{Enumerate, FilterMap};
 use core::mem::replace;
 
@@ -176,6 +177,18 @@ impl<V:Clone> SmallIntMap<V> {
     }
 }
 
+impl<V: fmt::Show> fmt::Show for SmallIntMap<V> {
+    fn fmt(&self, f: &mut fmt::Formatter) -> fmt::Result {
+        try!(write!(f, r"\{"));
+
+        for (i, (k, v)) in self.iter().enumerate() {
+            if i != 0 { try!(write!(f, ", ")); }
+            try!(write!(f, "{}: {}", k, *v));
+        }
+
+        write!(f, r"\}")
+    }
+}
 
 macro_rules! iterator {
     (impl $name:ident -> $elem:ty, $getter:ident) => {
@@ -461,6 +474,20 @@ mod test_map {
         assert!(called);
         m.insert(2, box 1);
     }
+
+    #[test]
+    fn test_show() {
+        let mut map = SmallIntMap::new();
+        let empty = SmallIntMap::<int>::new();
+
+        map.insert(1, 2);
+        map.insert(3, 4);
+
+        let map_str = map.to_str();
+        let map_str = map_str.as_slice();
+        assert!(map_str == "{1: 2, 3: 4}" || map_str == "{3: 4, 1: 2}");
+        assert_eq!(format!("{}", empty), "{}".to_string());
+    }
 }
 
 #[cfg(test)]