diff --git a/libbz2-rs-sys/src/blocksort.rs b/libbz2-rs-sys/src/blocksort.rs index 58db62213..c4f147c21 100644 --- a/libbz2-rs-sys/src/blocksort.rs +++ b/libbz2-rs-sys/src/blocksort.rs @@ -125,30 +125,32 @@ fn fallbackQSort3(fmap: &mut [u32], eclass: &[u32], loSt: i32, hiSt: i32) { loop { while unLo <= unHi { - match eclass[fmap[unLo as usize] as usize].cmp(&med) { - Ordering::Greater => break, - Ordering::Equal => { - fmap.swap(unLo as usize, ltLo as usize); - ltLo += 1; - unLo += 1; - } - Ordering::Less => { - unLo += 1; - } + let a = eclass[fmap[unLo as usize] as usize]; + let b = med; + + if a > b { + break; + } else if a == b { + fmap.swap(unLo as usize, ltLo as usize); + ltLo += 1; + unLo += 1; + } else { + unLo += 1; } } while unLo <= unHi { - match eclass[fmap[unHi as usize] as usize].cmp(&med) { - Ordering::Less => break, - Ordering::Equal => { - fmap.swap(unHi as usize, gtHi as usize); - gtHi -= 1; - unHi -= 1; - } - Ordering::Greater => { - unHi -= 1; - } + let a = eclass[fmap[unHi as usize] as usize]; + let b = med; + + if a < b { + break; + } else if a == b { + fmap.swap(unHi as usize, gtHi as usize); + gtHi -= 1; + unHi -= 1; + } else { + unHi -= 1; } } @@ -225,14 +227,8 @@ fn fallbackSort( let mut ftab: [i32; 257] = [0; 257]; let mut ftabCopy: [i32; 256] = [0; 256]; let mut H: i32; - let mut i: i32; - let mut j: i32; let mut k: i32; let mut l: i32; - let mut r: i32; - let mut cc: i32; - let mut cc1: i32; - let mut nNotDone: i32; /*-- Initial 1-char radix sort to generate @@ -287,21 +283,20 @@ fn fallbackSort( if verb >= 4 { debug_log!(" depth {:>6} has ", H); } - j = 0; - i = 0; - while i < nblock { + let mut j = 0; + for (i, x) in fmap[..nblock as usize].iter().enumerate() { if ISSET_BH!(i) { j = i; } - k = fmap[i as usize].wrapping_sub(H as c_uint) as i32; + k = x.wrapping_sub(H as c_uint) as i32; if k < 0 { k += nblock; } arr2.eclass()[k as usize] = j as u32; - i += 1; } - nNotDone = 0; - r = -1; + + let mut nNotDone = 0; + let mut r = -1; loop { /*-- find the next non-singleton bucket --*/ k = r + 1; @@ -342,11 +337,11 @@ fn fallbackSort( fallbackQSort3(fmap, arr2.eclass(), l, r); /*-- scan bucket and generate header bits-- */ - cc = -1; - for i in l..=r { - cc1 = arr2.eclass()[fmap[i as usize] as usize] as i32; + let mut cc = -1; + for (i, x) in fmap[l as usize..=r as usize].iter().enumerate() { + let cc1 = arr2.eclass()[*x as usize] as i32; if cc != cc1 { - SET_BH!(i); + SET_BH!(l + i as i32); cc = cc1; } }