From cb48a05cb949857d435b8d2732e93208429c7593 Mon Sep 17 00:00:00 2001 From: Max Bachmann Date: Wed, 27 Dec 2023 12:43:32 +0100 Subject: [PATCH] cleanup sliding window bounds --- src/lib.rs | 23 +++++++++-------------- 1 file changed, 9 insertions(+), 14 deletions(-) diff --git a/src/lib.rs b/src/lib.rs index 831b935..2811e4e 100644 --- a/src/lib.rs +++ b/src/lib.rs @@ -98,22 +98,17 @@ where let mut matches = 0; for (i, a_elem) in a.into_iter().enumerate() { - let min_bound = - // prevent integer wrapping - if i > search_range { - max(0, i - search_range) - } else { - 0 - }; - - let max_bound = min(b_len - 1, i + search_range); + // prevent integer wrapping + let min_bound = if i > search_range { + i - search_range + } else { + 0 + }; - if min_bound > max_bound { - continue; - } + let max_bound = min(b_len, i + search_range + 1); - for (j, b_elem) in b.into_iter().enumerate() { - if min_bound <= j && j <= max_bound && a_elem == b_elem && !b_flags[j] { + for (j, b_elem) in b.into_iter().enumerate().take(max_bound).skip(min_bound) { + if a_elem == b_elem && !b_flags[j] { a_flags[i] = true; b_flags[j] = true; matches += 1;