From 87b61296a5cee1eaf7aecc130afa27d63887f707 Mon Sep 17 00:00:00 2001 From: Alex Crichton Date: Mon, 1 Jul 2013 08:51:34 -0700 Subject: [PATCH] Compare values in TreeMap's 'lt' function Closes #5194 --- src/libextra/treemap.rs | 14 ++++++++------ 1 file changed, 8 insertions(+), 6 deletions(-) diff --git a/src/libextra/treemap.rs b/src/libextra/treemap.rs index 5e898f8e59d9d..4216b5a6d1af6 100644 --- a/src/libextra/treemap.rs +++ b/src/libextra/treemap.rs @@ -57,23 +57,25 @@ impl Eq for TreeMap { } // Lexicographical comparison -fn lt(a: &TreeMap, +fn lt(a: &TreeMap, b: &TreeMap) -> bool { let mut x = a.iter(); let mut y = b.iter(); let (a_len, b_len) = (a.len(), b.len()); for uint::min(a_len, b_len).times { - let (key_a,_) = x.next().unwrap(); - let (key_b,_) = y.next().unwrap(); + let (key_a, value_a) = x.next().unwrap(); + let (key_b, value_b) = y.next().unwrap(); if *key_a < *key_b { return true; } if *key_a > *key_b { return false; } - }; + if *value_a < *value_b { return true; } + if *value_a > *value_b { return false; } + } a_len < b_len } -impl Ord for TreeMap { +impl Ord for TreeMap { #[inline] fn lt(&self, other: &TreeMap) -> bool { lt(self, other) } #[inline] @@ -935,7 +937,7 @@ mod test_treemap { assert!(b.insert(0, 5)); assert!(a < b); assert!(a.insert(0, 7)); - assert!(!(a < b) && !(b < a)); + assert!(!(a < b) && b < a); assert!(b.insert(-2, 0)); assert!(b < a); assert!(a.insert(-5, 2));