Skip to main content

SplitParameters

Trait SplitParameters 

Source
pub trait SplitParameters {
    const MAX: usize;
    const MIN: usize;
    const LEAF_MAX: usize = Self::MAX;
    const LEAF_MIN: usize = Self::MIN;
    const BRANCH_MAX: usize = Self::MAX;
    const BRANCH_MIN: usize = Self::MIN;
    const BULK_LEAF_MAX: usize = Self::LEAF_MAX;
    const BULK_BRANCH_MAX: usize = Self::BRANCH_MAX;

    // Required method
    fn split(entries: &[Bounds]) -> (Vec<usize>, Vec<usize>);

    // Provided methods
    fn split_leaf(entries: &[Bounds]) -> (Vec<usize>, Vec<usize>) { ... }
    fn split_branch(entries: &[Bounds]) -> (Vec<usize>, Vec<usize>) { ... }
}
Expand description

How a full node is partitioned when it overflows.

Mirrors index::parameters + the split policy (index/parameters.hpp). Insertion uses the leaf/branch maxima and minima; bulk loading may select smaller maxima independently. The split method takes overflowing children (as bounds, so the strategy is payload-agnostic) and returns the two groups by index. Bulk leaf capacity must be non-zero and bulk branch capacity must be at least two.

Required Associated Constants§

Source

const MAX: usize

Maximum children per node before it must split.

Source

const MIN: usize

Minimum children each node must keep after a split.

Provided Associated Constants§

Source

const LEAF_MAX: usize = Self::MAX

Maximum values in a leaf. Defaults to Self::MAX.

Source

const LEAF_MIN: usize = Self::MIN

Minimum values in either half of a split leaf.

Source

const BRANCH_MAX: usize = Self::MAX

Maximum children in a branch. Defaults to Self::MAX.

Source

const BRANCH_MIN: usize = Self::MIN

Minimum children in either half of a split branch.

Source

const BULK_LEAF_MAX: usize = Self::LEAF_MAX

Maximum values per leaf created by bulk loading.

Source

const BULK_BRANCH_MAX: usize = Self::BRANCH_MAX

Maximum children per branch created by bulk loading.

Required Methods§

Source

fn split(entries: &[Bounds]) -> (Vec<usize>, Vec<usize>)

Partition entries (a bounds-per-child list) into two groups of indices, each of size at least Self::MIN.

Provided Methods§

Source

fn split_leaf(entries: &[Bounds]) -> (Vec<usize>, Vec<usize>)

Partition an overflowing leaf.

Source

fn split_branch(entries: &[Bounds]) -> (Vec<usize>, Vec<usize>)

Partition an overflowing branch.

Dyn Compatibility§

This trait is not dyn compatible.

In older versions of Rust, dyn compatibility was called "object safety".

Implementors§

Source§

impl<const BRANCH_MAX: usize, const BRANCH_MIN: usize, const LEAF_MAX: usize, const LEAF_MIN: usize, const PACKED_BRANCH_MAX: usize, const PACKED_LEAF_MAX: usize> SplitParameters for AsymmetricRStarSplit<BRANCH_MAX, BRANCH_MIN, LEAF_MAX, LEAF_MIN, PACKED_BRANCH_MAX, PACKED_LEAF_MAX>

Source§

const MAX: usize = BRANCH_MAX

Source§

const MIN: usize = BRANCH_MIN

Source§

const LEAF_MAX: usize = LEAF_MAX

Source§

const LEAF_MIN: usize = LEAF_MIN

Source§

const BRANCH_MAX: usize = BRANCH_MAX

Source§

const BRANCH_MIN: usize = BRANCH_MIN

Source§

const BULK_LEAF_MAX: usize

Source§

const BULK_BRANCH_MAX: usize

Source§

impl<const BRANCH_MAX: usize, const BRANCH_MIN: usize, const LEAF_MAX: usize, const LEAF_MIN: usize> SplitParameters for AsymmetricQuadratic<BRANCH_MAX, BRANCH_MIN, LEAF_MAX, LEAF_MIN>

Source§

const MAX: usize = BRANCH_MAX

Source§

const MIN: usize = BRANCH_MIN

Source§

const LEAF_MAX: usize = LEAF_MAX

Source§

const LEAF_MIN: usize = LEAF_MIN

Source§

const BRANCH_MAX: usize = BRANCH_MAX

Source§

const BRANCH_MIN: usize = BRANCH_MIN

Source§

impl<const MAX: usize, const MIN: usize> SplitParameters for Linear<MAX, MIN>

Source§

const MAX: usize = MAX

Source§

const MIN: usize = MIN

Source§

impl<const MAX: usize, const MIN: usize> SplitParameters for Quadratic<MAX, MIN>

Source§

const MAX: usize = MAX

Source§

const MIN: usize = MIN

Source§

impl<const MAX: usize, const MIN: usize> SplitParameters for RStarSplit<MAX, MIN>

Source§

const MAX: usize = MAX

Source§

const MIN: usize = MIN