diff options
| author | bors <bors@rust-lang.org> | 2014-06-07 15:31:44 -0700 |
|---|---|---|
| committer | bors <bors@rust-lang.org> | 2014-06-07 15:31:44 -0700 |
| commit | fa1832800a9b0781d48f9f66facdab201d62f483 (patch) | |
| tree | 880824fa650164650a2e0bf34448f7bcee4f0ce1 /src | |
| parent | 01eb0ce1227e3c7c2c32832508ea2930bd2cbb62 (diff) | |
| parent | 9731c28e116943220b397d3131273344f0750913 (diff) | |
| download | rust-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.rs | 25 | ||||
| -rw-r--r-- | src/libcollections/smallintmap.rs | 27 |
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)] |
