Trait rstar::RTreeParams

source ·
pub trait RTreeParams: Send + Sync {
    type DefaultInsertionStrategy: InsertionStrategy;

    const MIN_SIZE: usize;
    const MAX_SIZE: usize;
}
Expand description

Defines static parameters for an r-tree.

Internally, an r-tree contains several nodes, similar to a b-tree. These parameters change the size of these nodes and can be used to fine tune the tree’s performance.

Example

use rstar::{RTreeParams, RTree, RStarInsertionStrategy};

// This example uses an rtree with larger internal nodes.
struct LargeNodeParameters;

impl RTreeParams for LargeNodeParameters
{
    const MIN_SIZE: usize = 10;
    const MAX_SIZE: usize = 30;
    type DefaultInsertionStrategy = RStarInsertionStrategy;
}

// Optional but helpful: Define a type alias for the new r-tree
type LargeNodeRTree<T> = RTree<T, LargeNodeParameters>;

// The only difference from now on is the usage of "new_with_params" instead of "new"
let mut large_node_tree: LargeNodeRTree<_> = RTree::new_with_params();
// Using the r-tree should allow inference for the point type
large_node_tree.insert([1.0, -1.0f32]);
// There is also a bulk load method with parameters:
let tree: LargeNodeRTree<_> = RTree::bulk_load_with_params(some_elements);

Required Associated Types

The insertion strategy which is used when calling insert.

Required Associated Constants

The minimum size of an internal node. Must be at most half as large as MAX_SIZE. Choosing a value around one half or one third of MAX_SIZE is recommended. Higher values should yield slightly better tree quality while lower values may benefit insertion performance.

The maximum size of an internal node. Larger values will improve insertion performance but increase the average query time.

Implementors