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}