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>

source

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> Any for T
where T: 'static + ?Sized,

source§

fn type_id(&self) -> TypeId

Gets the TypeId of self. Read more
source§

impl<T> Borrow<T> for T
where T: ?Sized,

source§

fn borrow(&self) -> &T

Immutably borrows from an owned value. Read more
source§

impl<T> BorrowMut<T> for T
where T: ?Sized,

source§

fn borrow_mut(&mut self) -> &mut T

Mutably borrows from an owned value. Read more
source§

impl<T> From<T> for T

source§

fn from(t: T) -> T

Returns the argument unchanged.

source§

impl<'a, T> HyperTreeReadOperations<'a> for T

source§

fn lookup_index<V>(&'a self, value: &V) -> u32
where V: Payload,

Lookup the index of a given value.

source§

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

Get the current root index.

source§

fn get_next_lower_index<V>(&'a self, index: u32) -> u32
where 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) -> u32
where 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.

source§

fn lookup_max_index<V>(&'a self) -> u32
where V: Payload,

source§

impl<'a, T> HyperTreeValueIteratorTrait<'a, T> for T

source§

fn iter<V>(&'a self) -> HyperTreeValueReadOnlyIterator<'a, T, V>
where V: Payload,

source§

impl<T, U> Into<U> for T
where U: From<T>,

source§

fn into(self) -> U

Calls U::from(self).

That is, this conversion is whatever the implementation of From<T> for U chooses to do.

source§

impl<T, U> TryFrom<U> for T
where U: Into<T>,

§

type Error = Infallible

The type returned in the event of a conversion error.
source§

fn try_from(value: U) -> Result<T, <T as TryFrom<U>>::Error>

Performs the conversion.
source§

impl<T, U> TryInto<U> for T
where U: TryFrom<T>,

§

type Error = <U as TryFrom<T>>::Error

The type returned in the event of a conversion error.
source§

fn try_into(self) -> Result<U, <U as TryFrom<T>>::Error>

Performs the conversion.