pub trait BTreeTrait {
    type Elem: Debug;
    type Cache: Debug + Default + Clone + Eq;
    type CacheDiff: Debug;

    const MAX_LEN: usize;

    // Required methods
    fn calc_cache_internal(
        cache: &mut Self::Cache,
        caches: &[Child<Self>],
        diff: Option<Self::CacheDiff>
    ) -> Option<Self::CacheDiff>;
    fn calc_cache_leaf(
        cache: &mut Self::Cache,
        elements: &[Self::Elem],
        diff: Option<Self::CacheDiff>
    ) -> Self::CacheDiff;
    fn merge_cache_diff(diff1: &mut Self::CacheDiff, diff2: &Self::CacheDiff);

    // Provided methods
    fn insert(
        elements: &mut HeapVec<Self::Elem>,
        index: usize,
        offset: usize,
        elem: Self::Elem
    ) { ... }
    fn insert_batch(
        elements: &mut HeapVec<Self::Elem>,
        index: usize,
        offset: usize,
        new_elements: impl IntoIterator<Item = Self::Elem>
    )
       where Self::Elem: Clone { ... }
}

Required Associated Types§

Required Associated Constants§

source

const MAX_LEN: usize

Use () if you don’t need write buffer. Associated type default is still unstable so we don’t provide default value.

Required Methods§

source

fn calc_cache_internal( cache: &mut Self::Cache, caches: &[Child<Self>], diff: Option<Self::CacheDiff> ) -> Option<Self::CacheDiff>

If diff.is_some, return value should be some too

source

fn calc_cache_leaf( cache: &mut Self::Cache, elements: &[Self::Elem], diff: Option<Self::CacheDiff> ) -> Self::CacheDiff

source

fn merge_cache_diff(diff1: &mut Self::CacheDiff, diff2: &Self::CacheDiff)

Provided Methods§

source

fn insert( elements: &mut HeapVec<Self::Elem>, index: usize, offset: usize, elem: Self::Elem )

source

fn insert_batch( elements: &mut HeapVec<Self::Elem>, index: usize, offset: usize, new_elements: impl IntoIterator<Item = Self::Elem> )where Self::Elem: Clone,

Implementors§