| use std::ops::Bound; |
| |
| /// Converts a range bound to its indexes. |
| pub(super) fn bounds_to_usize( |
| left: Bound<&usize>, |
| right: Bound<&usize>, |
| count_elements: usize, |
| ) -> (usize, usize) { |
| match (left, right) { |
| (Bound::Included(x), Bound::Included(y)) => (*x, y + 1), |
| (Bound::Included(x), Bound::Excluded(y)) => (*x, *y), |
| (Bound::Included(x), Bound::Unbounded) => (*x, count_elements), |
| (Bound::Unbounded, Bound::Unbounded) => (0, count_elements), |
| (Bound::Unbounded, Bound::Included(y)) => (0, y + 1), |
| (Bound::Unbounded, Bound::Excluded(y)) => (0, *y), |
| (Bound::Excluded(_), Bound::Unbounded) |
| | (Bound::Excluded(_), Bound::Included(_)) |
| | (Bound::Excluded(_), Bound::Excluded(_)) => { |
| unreachable!("A start bound can't be excluded") |
| } |
| } |
| } |