1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21
use std::ops::{Bound, Range, RangeBounds};
pub fn bounds_to_range<R: RangeBounds<u64>>(
r: R,
fallback_min: u64,
fallback_max: u64,
) -> Range<u64> {
let start = match r.start_bound() {
Bound::Included(i) => *i,
Bound::Excluded(i) => *i + 1,
Bound::Unbounded => fallback_min,
};
let end = match r.end_bound() {
Bound::Included(i) => (*i + 1),
Bound::Excluded(i) => *i,
Bound::Unbounded => fallback_max,
};
Range { start, end }
}