diff options
| author | bors <bors@rust-lang.org> | 2014-05-27 16:11:39 -0700 |
|---|---|---|
| committer | bors <bors@rust-lang.org> | 2014-05-27 16:11:39 -0700 |
| commit | 30bf73fd789ad1414284f59b005e85304ff963ad (patch) | |
| tree | 5bf07be28c75144d479b35e9a2832795f76d2437 | |
| parent | 1fc29ef0c8c35eacf7d72e5eb0e7c961009ab4c9 (diff) | |
| parent | 926504c8853458dcde5f4ab66a10e11a6fcda2e7 (diff) | |
| download | rust-30bf73fd789ad1414284f59b005e85304ff963ad.tar.gz rust-30bf73fd789ad1414284f59b005e85304ff963ad.zip | |
auto merge of #14447 : erickt/rust/show-treemap, r=kballard
This is a hodge podge of a couple small cleanup commits. It implements `Show` for `TreeMap` and `TreeSet`, and some removal of commented out code.
| -rw-r--r-- | src/libcollections/hashmap.rs | 14 | ||||
| -rw-r--r-- | src/libcollections/treemap.rs | 60 | ||||
| -rw-r--r-- | src/libserialize/json.rs | 30 |
3 files changed, 72 insertions, 32 deletions
diff --git a/src/libcollections/hashmap.rs b/src/libcollections/hashmap.rs index 1b79b84ff90..c51061067dc 100644 --- a/src/libcollections/hashmap.rs +++ b/src/libcollections/hashmap.rs @@ -2004,6 +2004,20 @@ mod test_map { } #[test] + fn test_show() { + let mut map: HashMap<int, int> = HashMap::new(); + let empty: HashMap<int, int> = HashMap::new(); + + map.insert(1, 2); + map.insert(3, 4); + + let map_str = format!("{}", map); + + assert!(map_str == "{1: 2, 3: 4}".to_owned() || map_str == "{3: 4, 1: 2}".to_owned()); + assert_eq!(format!("{}", empty), "{}".to_owned()); + } + + #[test] fn test_expand() { let mut m = HashMap::new(); diff --git a/src/libcollections/treemap.rs b/src/libcollections/treemap.rs index bb4ca36709c..fb663d91131 100644 --- a/src/libcollections/treemap.rs +++ b/src/libcollections/treemap.rs @@ -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() } @@ -1329,6 +1357,20 @@ mod test_treemap { } #[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(); let (x1, y1) = (2, 5); @@ -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()); + } } diff --git a/src/libserialize/json.rs b/src/libserialize/json.rs index cf05bf5b641..0991c22d4a3 100644 --- a/src/libserialize/json.rs +++ b/src/libserialize/json.rs @@ -1434,36 +1434,6 @@ impl<T: Iterator<char>> Parser<T> { }, }, _ => return self.error(InvalidEscape), -/*======= - 'u' => { - // Parse \u1234. - let mut i = 0u; - let mut n = 0u; - while i < 4u && !self.eof() { - self.bump(); - n = match self.ch_or_null() { - c @ '0' .. '9' => n * 16u + (c as uint) - ('0' as uint), - 'a' | 'A' => n * 16u + 10u, - 'b' | 'B' => n * 16u + 11u, - 'c' | 'C' => n * 16u + 12u, - 'd' | 'D' => n * 16u + 13u, - 'e' | 'E' => n * 16u + 14u, - 'f' | 'F' => n * 16u + 15u, - _ => return self.error(UnrecognizedHex) - }; - - i += 1u; - } - - // Error out if we didn't parse 4 digits. - if i != 4u { - return self.error(NotFourDigit); - } - - res.push_char(char::from_u32(n as u32).unwrap()); - } - _ => return self.error(InvalidEscape), ->>>>>>> Add a streaming parser to serialize::json.*/ } escape = false; } else if self.ch_is('\\') { |
