Skip to content

Commit 926504c

Browse files
committed
collections: implement Show for Tree{Map,Set}
1 parent e9e799f commit 926504c

File tree

1 file changed

+58
-2
lines changed

1 file changed

+58
-2
lines changed

src/libcollections/treemap.rs

+58-2
Original file line numberDiff line numberDiff line change
@@ -12,9 +12,11 @@
1212
//! trees. The only requirement for the types is that the key implements
1313
//! `TotalOrd`.
1414
15-
use std::iter;
16-
use std::iter::{Peekable};
1715
use std::cmp::Ordering;
16+
use std::fmt::Show;
17+
use std::fmt;
18+
use std::iter::Peekable;
19+
use std::iter;
1820
use std::mem::{replace, swap};
1921
use std::ptr;
2022

@@ -67,6 +69,19 @@ impl<K: Ord + TotalOrd, V: Ord> Ord for TreeMap<K, V> {
6769
fn lt(&self, other: &TreeMap<K, V>) -> bool { lt(self, other) }
6870
}
6971

72+
impl<K: TotalOrd + Show, V: Show> Show for TreeMap<K, V> {
73+
fn fmt(&self, f: &mut fmt::Formatter) -> fmt::Result {
74+
try!(write!(f, r"\{"));
75+
76+
for (i, (k, v)) in self.iter().enumerate() {
77+
if i != 0 { try!(write!(f, ", ")); }
78+
try!(write!(f, "{}: {}", *k, *v));
79+
}
80+
81+
write!(f, r"\}")
82+
}
83+
}
84+
7085
impl<K: TotalOrd, V> Container for TreeMap<K, V> {
7186
fn len(&self) -> uint { self.length }
7287
}
@@ -547,6 +562,19 @@ impl<T: Ord + TotalOrd> Ord for TreeSet<T> {
547562
fn lt(&self, other: &TreeSet<T>) -> bool { self.map < other.map }
548563
}
549564

565+
impl<T: TotalOrd + Show> Show for TreeSet<T> {
566+
fn fmt(&self, f: &mut fmt::Formatter) -> fmt::Result {
567+
try!(write!(f, r"\{"));
568+
569+
for (i, x) in self.iter().enumerate() {
570+
if i != 0 { try!(write!(f, ", ")); }
571+
try!(write!(f, "{}", *x));
572+
}
573+
574+
write!(f, r"\}")
575+
}
576+
}
577+
550578
impl<T: TotalOrd> Container for TreeSet<T> {
551579
#[inline]
552580
fn len(&self) -> uint { self.map.len() }
@@ -1328,6 +1356,20 @@ mod test_treemap {
13281356
assert!(a < b && a <= b);
13291357
}
13301358

1359+
#[test]
1360+
fn test_show() {
1361+
let mut map: TreeMap<int, int> = TreeMap::new();
1362+
let empty: TreeMap<int, int> = TreeMap::new();
1363+
1364+
map.insert(1, 2);
1365+
map.insert(3, 4);
1366+
1367+
let map_str = format!("{}", map);
1368+
1369+
assert!(map_str == "{1: 2, 3: 4}".to_owned());
1370+
assert_eq!(format!("{}", empty), "{}".to_owned());
1371+
}
1372+
13311373
#[test]
13321374
fn test_lazy_iterator() {
13331375
let mut m = TreeMap::new();
@@ -1723,4 +1765,18 @@ mod test_set {
17231765
assert!(set.contains(x));
17241766
}
17251767
}
1768+
1769+
#[test]
1770+
fn test_show() {
1771+
let mut set: TreeSet<int> = TreeSet::new();
1772+
let empty: TreeSet<int> = TreeSet::new();
1773+
1774+
set.insert(1);
1775+
set.insert(2);
1776+
1777+
let set_str = format!("{}", set);
1778+
1779+
assert!(set_str == "{1, 2}".to_owned());
1780+
assert_eq!(format!("{}", empty), "{}".to_owned());
1781+
}
17261782
}

0 commit comments

Comments
 (0)