pub struct RecursiveModelIndex { /* private fields */ }Expand description
Two-level Recursive Model Index for O(1) expected lookups
§Architecture
Level 1 (Root): [Linear Model] → routes to leaf model
Level 2 (Leaves): [PLM 0] [PLM 1] ... [PLM N] → position predictions§Performance
- Space: O(M × params) where M = number of models
- Lookup: O(1) average, O(log ε) for binary search in error range
Implementations§
Source§impl RecursiveModelIndex
impl RecursiveModelIndex
Sourcepub fn build(keys: &[u64], num_leaves: usize, leaf_max_error: usize) -> Self
pub fn build(keys: &[u64], num_leaves: usize, leaf_max_error: usize) -> Self
Build a 2-level RMI
§Arguments
keys- Sorted keysnum_leaves- Number of leaf models (typically √N)leaf_max_error- Max error per leaf segment
Sourcepub fn lookup(&self, key: u64, data_len: usize) -> Option<(usize, usize)>
pub fn lookup(&self, key: u64, data_len: usize) -> Option<(usize, usize)>
Look up position bounds for a key
Sourcepub fn size_bytes(&self) -> usize
pub fn size_bytes(&self) -> usize
Get space usage in bytes
Sourcepub fn num_leaves(&self) -> usize
pub fn num_leaves(&self) -> usize
Get number of leaf models
Sourcepub fn total_segments(&self) -> usize
pub fn total_segments(&self) -> usize
Get total segment count across all leaves
Trait Implementations§
Auto Trait Implementations§
impl Freeze for RecursiveModelIndex
impl RefUnwindSafe for RecursiveModelIndex
impl Send for RecursiveModelIndex
impl Sync for RecursiveModelIndex
impl Unpin for RecursiveModelIndex
impl UnsafeUnpin for RecursiveModelIndex
impl UnwindSafe for RecursiveModelIndex
Blanket Implementations§
impl<T> Allocation for T
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
Mutably borrows from an owned value. Read more
impl<ST, DT> CastableFrom<ST, Initialized, Initialized> for DT
impl<ST, DT> CastableFrom<ST, Uninit, Uninit> for DT
Source§impl<T> Instrument for T
impl<T> Instrument for T
Source§fn instrument(self, span: Span) -> Instrumented<Self>
fn instrument(self, span: Span) -> Instrumented<Self>
Source§fn in_current_span(self) -> Instrumented<Self>
fn in_current_span(self) -> Instrumented<Self>
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>
Converts
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>
Converts
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 more