pub trait UseLengthFinder<B: BTreeTrait> {
// Required methods
fn get_len(cache: &B::Cache) -> usize;
fn find_element_by_offset(
elements: &[<B as BTreeTrait>::Elem],
offset: usize
) -> FindResult;
// Provided methods
fn finder_delete(
elements: &mut HeapVec<B::Elem>,
elem_index: usize,
offset: usize
) -> Option<B::Elem> { ... }
fn finder_drain_range(
elements: &mut HeapVec<B::Elem>,
start: Option<QueryResult>,
end: Option<QueryResult>
) -> Box<dyn Iterator<Item = B::Elem> + '_> { ... }
fn finder_delete_range(
elements: &mut HeapVec<B::Elem>,
start: Option<QueryResult>,
end: Option<QueryResult>
) { ... }
}