From f1bff592b1d3dff14459374af930ae3fee6253ce Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Adolfo=20Ochagav=C3=ADa?= Date: Sat, 7 Jun 2014 15:01:44 +0200 Subject: [PATCH 1/2] Implement Show for DList --- src/libcollections/dlist.rs | 25 +++++++++++++++++++++++++ 1 file changed, 25 insertions(+) diff --git a/src/libcollections/dlist.rs b/src/libcollections/dlist.rs index 94c617b58e8d..9d0e8e83698d 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 Clone for DList { } } +impl fmt::Show for DList { + 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 = 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 = DList::new(); From 9731c28e116943220b397d3131273344f0750913 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Adolfo=20Ochagav=C3=ADa?= Date: Sat, 7 Jun 2014 18:17:58 +0200 Subject: [PATCH 2/2] Implement Show for SmallIntMap --- src/libcollections/smallintmap.rs | 27 +++++++++++++++++++++++++++ 1 file changed, 27 insertions(+) diff --git a/src/libcollections/smallintmap.rs b/src/libcollections/smallintmap.rs index f3118181bdcd..45584dd4b28b 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 SmallIntMap { } } +impl fmt::Show for SmallIntMap { + 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::::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)]