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] 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 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 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();