fix(rangeset): default to 0 when candidate is None (#58)

This commit is contained in:
dan
2025-03-24 12:18:12 +01:00
committed by GitHub
parent 6650a956d3
commit 91cd8bbbb3

View File

@@ -122,7 +122,7 @@ where
for (i, (pos, item)) in others.iter().enumerate() {
let cover = f(item).intersection(&uncovered).len();
// If cover is non-empty or greater than the current candidate, update the candidate.
if cover > candidate.as_ref().map_or(1, |c| c.cover) {
if cover > candidate.as_ref().map_or(0, |c| c.cover) {
candidate = Some(Candidate {
i,
pos: *pos,
@@ -283,4 +283,16 @@ mod tests {
let result = query.cover(others.iter());
assert!(result.is_none());
}
#[test]
#[allow(clippy::single_range_in_vec_init)]
fn test_length_one_subset() {
let query: RangeSet<i32> = RangeSet::from(vec![1..2]);
// A subset with a range of length 1.
let others = [RangeSet::from(vec![1..2])];
let result = query.cover(others.iter());
assert!(result.is_some());
}
}