Struct hypertree::red_black_tree::RedBlackTreeReadOnly
source · pub struct RedBlackTreeReadOnly<'a, V: Payload> { /* private fields */ }
Expand description
A Red-Black tree which supports random access O(log n) and get max O(1), but does not require the data to be mutable.
Implementations§
source§impl<'a, V: Payload> RedBlackTreeReadOnly<'a, V>
impl<'a, V: Payload> RedBlackTreeReadOnly<'a, V>
sourcepub fn new(data: &'a [u8], root_index: DataIndex, max_index: DataIndex) -> Self
pub fn new(data: &'a [u8], root_index: DataIndex, max_index: DataIndex) -> Self
Creates a new RedBlackTree. Does not mutate data yet. Assumes the actual data in data is already well formed as a red black tree. It is necessary to persist the root_index to re-initialize a tree, storing the max_index is recommended when in-order iteration is performance critical.
Depending on the index args this will behave differently:
root=NIL: initializes an empty tree, get_max() is defined
root!=NIL max=NIL: initializes an existing tree, get_max() is undefined & iter() will dynamically lookup the maximum
root!=NIL max!=NIL: initializes an existing tree, get_max() is defined
Trait Implementations§
Auto Trait Implementations§
impl<'a, V> Freeze for RedBlackTreeReadOnly<'a, V>
impl<'a, V> RefUnwindSafe for RedBlackTreeReadOnly<'a, V>where
V: RefUnwindSafe,
impl<'a, V> Send for RedBlackTreeReadOnly<'a, V>where
V: Sync,
impl<'a, V> Sync for RedBlackTreeReadOnly<'a, V>where
V: Sync,
impl<'a, V> Unpin for RedBlackTreeReadOnly<'a, V>
impl<'a, V> UnwindSafe for RedBlackTreeReadOnly<'a, V>where
V: RefUnwindSafe,
Blanket Implementations§
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<'a, T> HyperTreeReadOperations<'a> for Twhere
T: GetRedBlackTreeReadOnlyData<'a>,
impl<'a, T> HyperTreeReadOperations<'a> for Twhere
T: GetRedBlackTreeReadOnlyData<'a>,
source§fn lookup_index<V>(&'a self, value: &V) -> u32where
V: Payload,
fn lookup_index<V>(&'a self, value: &V) -> u32where
V: Payload,
Lookup the index of a given value.
source§fn get_max_index(&self) -> u32
fn get_max_index(&self) -> u32
Get the max index. If a tree set this to NIL on a non-empty tree, this will always be NIL.
source§fn get_root_index(&self) -> u32
fn get_root_index(&self) -> u32
Get the current root index.
source§fn get_next_lower_index<V>(&'a self, index: u32) -> u32where
V: Payload,
fn get_next_lower_index<V>(&'a self, index: u32) -> u32where
V: Payload,
Get the previous index. This walks the tree, so does not care about equal keys.
source§fn get_next_higher_index<V>(&'a self, index: u32) -> u32where
V: Payload,
fn get_next_higher_index<V>(&'a self, index: u32) -> u32where
V: Payload,
Get the next index. This walks the tree, so does not care about equal keys. Used to swap an internal node with the next leaf, when insert or delete points at an internal node. It should never be called on leaf nodes.