collections: implement Show for Tree{Map,Set}
This commit is contained in:
parent
e9e799f750
commit
926504c885
@ -12,9 +12,11 @@
|
||||
//! trees. The only requirement for the types is that the key implements
|
||||
//! `TotalOrd`.
|
||||
|
||||
use std::iter;
|
||||
use std::iter::{Peekable};
|
||||
use std::cmp::Ordering;
|
||||
use std::fmt::Show;
|
||||
use std::fmt;
|
||||
use std::iter::Peekable;
|
||||
use std::iter;
|
||||
use std::mem::{replace, swap};
|
||||
use std::ptr;
|
||||
|
||||
@ -67,6 +69,19 @@ impl<K: Ord + TotalOrd, V: Ord> Ord for TreeMap<K, V> {
|
||||
fn lt(&self, other: &TreeMap<K, V>) -> bool { lt(self, other) }
|
||||
}
|
||||
|
||||
impl<K: TotalOrd + Show, V: Show> Show for TreeMap<K, 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"\}")
|
||||
}
|
||||
}
|
||||
|
||||
impl<K: TotalOrd, V> Container for TreeMap<K, V> {
|
||||
fn len(&self) -> uint { self.length }
|
||||
}
|
||||
@ -547,6 +562,19 @@ impl<T: Ord + TotalOrd> Ord for TreeSet<T> {
|
||||
fn lt(&self, other: &TreeSet<T>) -> bool { self.map < other.map }
|
||||
}
|
||||
|
||||
impl<T: TotalOrd + Show> Show for TreeSet<T> {
|
||||
fn fmt(&self, f: &mut fmt::Formatter) -> fmt::Result {
|
||||
try!(write!(f, r"\{"));
|
||||
|
||||
for (i, x) in self.iter().enumerate() {
|
||||
if i != 0 { try!(write!(f, ", ")); }
|
||||
try!(write!(f, "{}", *x));
|
||||
}
|
||||
|
||||
write!(f, r"\}")
|
||||
}
|
||||
}
|
||||
|
||||
impl<T: TotalOrd> Container for TreeSet<T> {
|
||||
#[inline]
|
||||
fn len(&self) -> uint { self.map.len() }
|
||||
@ -1328,6 +1356,20 @@ mod test_treemap {
|
||||
assert!(a < b && a <= b);
|
||||
}
|
||||
|
||||
#[test]
|
||||
fn test_show() {
|
||||
let mut map: TreeMap<int, int> = TreeMap::new();
|
||||
let empty: TreeMap<int, int> = TreeMap::new();
|
||||
|
||||
map.insert(1, 2);
|
||||
map.insert(3, 4);
|
||||
|
||||
let map_str = format!("{}", map);
|
||||
|
||||
assert!(map_str == "{1: 2, 3: 4}".to_owned());
|
||||
assert_eq!(format!("{}", empty), "{}".to_owned());
|
||||
}
|
||||
|
||||
#[test]
|
||||
fn test_lazy_iterator() {
|
||||
let mut m = TreeMap::new();
|
||||
@ -1723,4 +1765,18 @@ mod test_set {
|
||||
assert!(set.contains(x));
|
||||
}
|
||||
}
|
||||
|
||||
#[test]
|
||||
fn test_show() {
|
||||
let mut set: TreeSet<int> = TreeSet::new();
|
||||
let empty: TreeSet<int> = TreeSet::new();
|
||||
|
||||
set.insert(1);
|
||||
set.insert(2);
|
||||
|
||||
let set_str = format!("{}", set);
|
||||
|
||||
assert!(set_str == "{1, 2}".to_owned());
|
||||
assert_eq!(format!("{}", empty), "{}".to_owned());
|
||||
}
|
||||
}
|
||||
|
Loading…
x
Reference in New Issue
Block a user