@@ -8,29 +8,30 @@ use std::map::hashmap;
8
8
use std:: sort;
9
9
use io:: ReaderUtil ;
10
10
use pipes:: { stream, Port , Chan } ;
11
+ use cmp:: Ord ;
11
12
12
13
// given a map, print a sorted version of it
13
14
fn sort_and_fmt ( mm : hashmap < ~[ u8 ] , uint > , total : uint ) -> ~str {
14
15
fn pct ( xx : uint , yy : uint ) -> float {
15
16
return ( xx as float ) * 100 f / ( yy as float ) ;
16
17
}
17
18
18
- pure fn le_by_val < TT : Copy , UU : Copy > ( kv0 : & ( TT , UU ) ,
19
+ pure fn le_by_val < TT : Copy , UU : Copy Ord > ( kv0 : & ( TT , UU ) ,
19
20
kv1 : & ( TT , UU ) ) -> bool {
20
21
let ( _, v0) = * kv0;
21
22
let ( _, v1) = * kv1;
22
23
return v0 >= v1;
23
24
}
24
25
25
- pure fn le_by_key < TT : Copy , UU : Copy > ( kv0 : & ( TT , UU ) ,
26
+ pure fn le_by_key < TT : Copy Ord , UU : Copy > ( kv0 : & ( TT , UU ) ,
26
27
kv1 : & ( TT , UU ) ) -> bool {
27
28
let ( k0, _) = * kv0;
28
29
let ( k1, _) = * kv1;
29
30
return k0 <= k1;
30
31
}
31
32
32
33
// sort by key, then by value
33
- fn sortKV < TT : Copy , UU : Copy > ( orig : ~[ ( TT , UU ) ] ) -> ~[ ( TT , UU ) ] {
34
+ fn sortKV < TT : Copy Ord , UU : Copy Ord > ( orig : ~[ ( TT , UU ) ] ) -> ~[ ( TT , UU ) ] {
34
35
return sort:: merge_sort ( le_by_val, sort:: merge_sort ( le_by_key, orig) ) ;
35
36
}
36
37
0 commit comments