rstar

Trait RTreeParams

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

    const MIN_SIZE: usize;
    const MAX_SIZE: usize;
    const REINSERTION_COUNT: 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;
    const REINSERTION_COUNT: usize = 5;
    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 Constants§

Source

const MIN_SIZE: usize

The minimum size of an internal node. MIN_SIZE must be greater than zero, and up to half as large as MAX_SIZE.

Choosing a value around one half or one third of MAX_SIZE is recommended. Larger values should yield slightly better tree quality, while lower values may benefit insertion performance.

Source

const MAX_SIZE: usize

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

Source

const REINSERTION_COUNT: usize

The number of nodes that the insertion strategy tries to occasionally reinsert to maintain a good tree quality. Must be smaller than MAX_SIZE - MIN_SIZE. Larger values will improve query times but increase insertion time.

Required Associated Types§

Source

type DefaultInsertionStrategy: InsertionStrategy

The insertion strategy which is used when calling RTree::insert.

Dyn Compatibility§

This trait is not dyn compatible.

In older versions of Rust, dyn compatibility was called "object safety", so this trait is not object safe.

Implementors§