pub struct RTree { /* private fields */ }Expand description
R*-tree spatial index.
Supports insert, delete, range search (bbox intersection), and incremental nearest-neighbor queries. Array-backed nodes for cache friendliness.
References:
- Beckmann et al., “The R*-tree” (1990)
- Hjaltason & Samet, “Distance Browsing in Spatial Databases” (1999)
Implementations§
Source§impl RTree
impl RTree
Sourcepub fn checkpoint_to_bytes(&self) -> Result<Vec<u8>, RTreeCheckpointError>
pub fn checkpoint_to_bytes(&self) -> Result<Vec<u8>, RTreeCheckpointError>
Serialize the R-tree to rkyv bytes (with magic header) for checkpointing.
Sourcepub fn from_checkpoint(bytes: &[u8]) -> Result<Self, RTreeCheckpointError>
pub fn from_checkpoint(bytes: &[u8]) -> Result<Self, RTreeCheckpointError>
Restore an R-tree from checkpoint bytes.
Auto-detects format: rkyv (magic RKSPT\0) or legacy MessagePack.
Uses bulk_load (STR packing) for optimal node packing.
Source§impl RTree
impl RTree
Sourcepub fn bulk_load(entries: Vec<RTreeEntry>) -> Self
pub fn bulk_load(entries: Vec<RTreeEntry>) -> Self
Bulk load entries using Sort-Tile-Recursive packing.
More efficient than repeated single inserts for large datasets. Produces better packing (less overlap between nodes).
Source§impl RTree
impl RTree
pub fn new() -> Self
pub fn len(&self) -> usize
pub fn is_empty(&self) -> bool
Sourcepub fn search(&self, query: &BoundingBox) -> Vec<&RTreeEntry>
pub fn search(&self, query: &BoundingBox) -> Vec<&RTreeEntry>
Range search: return all entries whose bbox intersects the query bbox.
Sourcepub fn search_owned(&self, query: &BoundingBox) -> Vec<RTreeEntry>
pub fn search_owned(&self, query: &BoundingBox) -> Vec<RTreeEntry>
Range search returning owned entries.
Sourcepub fn nearest(&self, query_lng: f64, query_lat: f64, k: usize) -> Vec<NnResult>
pub fn nearest(&self, query_lng: f64, query_lat: f64, k: usize) -> Vec<NnResult>
Nearest-neighbor search using incremental distance ordering.
Sourcepub fn entries(&self) -> Vec<&RTreeEntry>
pub fn entries(&self) -> Vec<&RTreeEntry>
Get all entries (for persistence serialization).
Trait Implementations§
Auto Trait Implementations§
impl Freeze for RTree
impl RefUnwindSafe for RTree
impl Send for RTree
impl Sync for RTree
impl Unpin for RTree
impl UnsafeUnpin for RTree
impl UnwindSafe for RTree
Blanket Implementations§
Source§impl<T> ArchivePointee for T
impl<T> ArchivePointee for T
Source§type ArchivedMetadata = ()
type ArchivedMetadata = ()
Source§fn pointer_metadata(
_: &<T as ArchivePointee>::ArchivedMetadata,
) -> <T as Pointee>::Metadata
fn pointer_metadata( _: &<T as ArchivePointee>::ArchivedMetadata, ) -> <T as Pointee>::Metadata
Source§impl<T> BorrowMut<T> for Twhere
T: ?Sized,
impl<T> BorrowMut<T> for Twhere
T: ?Sized,
Source§fn borrow_mut(&mut self) -> &mut T
fn borrow_mut(&mut self) -> &mut T
Source§impl<T> IntoEither for T
impl<T> IntoEither for T
Source§fn into_either(self, into_left: bool) -> Either<Self, Self>
fn into_either(self, into_left: bool) -> Either<Self, Self>
self into a Left variant of Either<Self, Self>
if into_left is true.
Converts self into a Right variant of Either<Self, Self>
otherwise. Read moreSource§fn into_either_with<F>(self, into_left: F) -> Either<Self, Self>
fn into_either_with<F>(self, into_left: F) -> Either<Self, Self>
self into a Left variant of Either<Self, Self>
if into_left(&self) returns true.
Converts self into a Right variant of Either<Self, Self>
otherwise. Read moreSource§impl<T> LayoutRaw for T
impl<T> LayoutRaw for T
Source§fn layout_raw(_: <T as Pointee>::Metadata) -> Result<Layout, LayoutError>
fn layout_raw(_: <T as Pointee>::Metadata) -> Result<Layout, LayoutError>
Source§impl<T, N1, N2> Niching<NichedOption<T, N1>> for N2
impl<T, N1, N2> Niching<NichedOption<T, N1>> for N2
Source§unsafe fn is_niched(niched: *const NichedOption<T, N1>) -> bool
unsafe fn is_niched(niched: *const NichedOption<T, N1>) -> bool
Source§fn resolve_niched(out: Place<NichedOption<T, N1>>)
fn resolve_niched(out: Place<NichedOption<T, N1>>)
out indicating that a T is niched.