@@ -57,23 +57,25 @@ impl<K: Eq + TotalOrd, V: Eq> Eq for TreeMap<K, V> {
57
57
}
58
58
59
59
// Lexicographical comparison
60
- fn lt < K : Ord + TotalOrd , V > ( a: & TreeMap < K , V > ,
60
+ fn lt < K : Ord + TotalOrd , V : Ord > ( a: & TreeMap < K , V > ,
61
61
b: & TreeMap < K , V > ) -> bool {
62
62
let mut x = a. iter( ) ;
63
63
let mut y = b. iter( ) ;
64
64
65
65
let ( a_len, b_len) = ( a. len( ) , b. len( ) ) ;
66
66
for uint:: min( a_len, b_len) . times {
67
- let ( key_a, _ ) = x. next( ) . unwrap( ) ;
68
- let ( key_b, _ ) = y. next( ) . unwrap( ) ;
67
+ let ( key_a, value_a ) = x. next( ) . unwrap( ) ;
68
+ let ( key_b, value_b ) = y. next( ) . unwrap( ) ;
69
69
if * key_a < * key_b { return true ; }
70
70
if * key_a > * key_b { return false ; }
71
- } ;
71
+ if * value_a < * value_b { return true ; }
72
+ if * value_a > * value_b { return false ; }
73
+ }
72
74
73
75
a_len < b_len
74
76
}
75
77
76
- impl <K : Ord + TotalOrd , V > Ord for TreeMap < K , V > {
78
+ impl <K : Ord + TotalOrd , V : Ord > Ord for TreeMap < K , V > {
77
79
#[ inline]
78
80
fn lt ( & self , other : & TreeMap < K , V > ) -> bool { lt ( self , other) }
79
81
#[ inline]
@@ -935,7 +937,7 @@ mod test_treemap {
935
937
assert ! ( b. insert( 0 , 5 ) ) ;
936
938
assert ! ( a < b) ;
937
939
assert ! ( a. insert( 0 , 7 ) ) ;
938
- assert ! ( !( a < b) && ! ( b < a) ) ;
940
+ assert ! ( !( a < b) && b < a) ;
939
941
assert ! ( b. insert( -2 , 0 ) ) ;
940
942
assert ! ( b < a) ;
941
943
assert ! ( a. insert( -5 , 2 ) ) ;
0 commit comments