Extract indices from a range with overscan applied.
(
range: std::ops::Range<usize>,
overscan: usize,
count: usize,
)
| 16 | |
| 17 | /// Extract indices from a range with overscan applied. |
| 18 | pub(crate) fn default_range_extractor( |
| 19 | range: std::ops::Range<usize>, |
| 20 | overscan: usize, |
| 21 | count: usize, |
| 22 | ) -> RangeInclusive<usize> { |
| 23 | if count == 0 { |
| 24 | return 0..=0; |
| 25 | } |
| 26 | |
| 27 | let start = range.start.saturating_sub(overscan); |
| 28 | let end = (range.end + overscan).min(count - 1); |
| 29 | |
| 30 | start..=end |
| 31 | } |