From 27e936c22a8b5603e7621a592bf3497113f301a5 Mon Sep 17 00:00:00 2001 From: Simon Gardling Date: Mon, 27 Jan 2025 22:34:45 -0500 Subject: [PATCH] improve split_from --- src/misc.rs | 16 +++++++++++++++- 1 file changed, 15 insertions(+), 1 deletion(-) diff --git a/src/misc.rs b/src/misc.rs index ed7c476..929ac93 100644 --- a/src/misc.rs +++ b/src/misc.rs @@ -4,7 +4,17 @@ pub fn split_from(min: usize, max: usize, x: usize) -> Vec> { } let x_lower = x.checked_sub(1).unwrap_or(min); let x_upper = (x + 1).min(max); - vec![(min..=x_lower).rev().collect(), (x_upper..=max).collect()] + let lower_range = if x_lower != min { + (min..=x_lower).rev().collect() + } else { + Vec::new() + }; + let upper_range = if x_upper != max { + (x_upper..=max).collect() + } else { + Vec::new() + }; + vec![lower_range, upper_range] } #[cfg(test)] @@ -14,5 +24,9 @@ mod test { #[test] fn split_test() { assert_eq!(split_from(0, 6, 2), vec![vec![1, 0], vec![3, 4, 5, 6]]); + + assert_eq!(split_from(0, 6, 0), vec![vec![], vec![1, 2, 3, 4, 5, 6]]); + + assert_eq!(split_from(0, 6, 6), vec![vec![5, 4, 3, 2, 1, 0], vec![]]); } }