vecdb/traits/from_coarser.rs
1use std::ops::RangeInclusive;
2
3pub trait FromCoarserIndex<T>
4where
5 T: Ord + From<usize>,
6{
7 fn min_from(coarser: T) -> usize;
8 fn max_from_(coarser: T) -> usize;
9 fn max_from(coarser: T, len: usize) -> usize {
10 Self::max_from_(coarser).min(len - 1)
11 }
12 fn inclusive_range_from(coarser: T, len: usize) -> RangeInclusive<usize>
13 where
14 T: Clone,
15 {
16 Self::min_from(coarser.clone())..=Self::max_from(coarser, len)
17 }
18}