@@ -179,7 +179,6 @@ pub fn tim_sort<T: Copy Ord>(array: &[mut T]) {
179
179
}
180
180
181
181
let ms = & MergeState ( ) ;
182
- ms. array = array;
183
182
let min_run = min_run_length ( size) ;
184
183
185
184
let mut idx = 0 ;
@@ -383,14 +382,13 @@ struct RunState {
383
382
384
383
struct MergeState < T > {
385
384
mut min_gallop : uint ,
386
- mut array : & [ mut T ] ,
387
385
runs : DVec < RunState > ,
388
386
}
389
387
388
+ // Fixme (#3853) Move into MergeState
390
389
fn MergeState < T > ( ) -> MergeState < T > {
391
390
MergeState {
392
391
min_gallop : MIN_GALLOP ,
393
- array : & [ mut] ,
394
392
runs : DVec ( ) ,
395
393
}
396
394
}
@@ -500,9 +498,8 @@ impl<T: Copy Ord> MergeState<T> {
500
498
loop {
501
499
assert len1 > 1 && len2 != 0 ;
502
500
503
- //let tmp_view = vec::const_view(tmp, c1, c1+len1);
504
- count1 = gallop_right ( & const array[ c2] ,
505
- vec:: const_view ( tmp, c1, c1+len1) , 0 ) ;
501
+ let tmp_view = vec:: const_view ( tmp, c1, c1+len1) ;
502
+ count1 = gallop_right ( & const array[ c2] , tmp_view, 0 ) ;
506
503
if count1 != 0 {
507
504
copy_vec ( array, dest, tmp, c1, count1) ;
508
505
dest += count1; c1 += count1; len1 -= count1;
@@ -620,9 +617,9 @@ impl<T: Copy Ord> MergeState<T> {
620
617
dest -= 1; c2 -= 1; len2 -= 1;
621
618
if len2 == 1 { break_outer = true; break; }
622
619
623
- // let tmp_view = vec::mut_view(tmp, 0, len2);
620
+ let tmp_view = vec::mut_view(tmp, 0, len2);
624
621
let count2 = len2 - gallop_left(&const array[c1],
625
- vec::mut_view(tmp, 0, len2) , len2-1);
622
+ tmp_view , len2-1);
626
623
if count2 != 0 {
627
624
dest -= count2; c2 -= count2; len2 -= count2;
628
625
copy_vec(array, dest+1, tmp, c2+1, count2);
0 commit comments