11#[ doc = "Sorting methods" ] ;
22import vec:: len;
3+ import int:: { eq, ord} ;
34
45export le;
56export merge_sort;
@@ -141,7 +142,6 @@ fn qsort3<T: copy>(compare_func_lt: le<T>, compare_func_eq: le<T>,
141142 qsort3 :: < T > ( compare_func_lt, compare_func_eq, arr, i, right) ;
142143}
143144
144- // FIXME: This should take lt and eq types (#2348)
145145#[ doc = "
146146Fancy quicksort. Sorts a mut vector in place.
147147
@@ -152,22 +152,17 @@ According to these slides this is the algorithm of choice for
152152
153153This is an unstable sort.
154154" ]
155- fn quick_sort3 < T : copy > ( compare_func_lt : le < T > , compare_func_eq : le < T > ,
156- arr : [ mut T ] ) {
155+ fn quick_sort3 < T : copy ord eq> ( arr : [ mut T ] ) {
157156 if len :: < T > ( arr) == 0 u { ret; }
158- qsort3 :: < T > ( compare_func_lt , compare_func_eq , arr, 0 ,
157+ qsort3 :: < T > ( { |x , y| x . lt ( y ) } , { |x , y| x . eq ( y ) } , arr, 0 ,
159158 ( len :: < T > ( arr) as int ) - 1 ) ;
160159}
161160
162161#[ cfg( test) ]
163162mod test_qsort3 {
164163 fn check_sort ( v1 : [ mut int] , v2 : [ mut int] ) {
165164 let len = vec:: len :: < int > ( v1) ;
166- fn lt ( & & a: int , & & b: int ) -> bool { ret a < b; }
167- fn equal ( & & a: int , & & b: int ) -> bool { ret a == b; }
168- let f1 = lt;
169- let f2 = equal;
170- quick_sort3 :: < int > ( f1, f2, v1) ;
165+ quick_sort3 :: < int > ( v1) ;
171166 let mut i = 0 u;
172167 while i < len {
173168 log ( debug, v2[ i] ) ;
0 commit comments