Struct layout_2020::flow::float::FloatBandTree
source · pub struct FloatBandTree {
pub root: FloatBandLink,
}
Expand description
A persistent AA tree for float band storage.
Bands here are nonoverlapping, and there is guaranteed to be a band at block-position 0 and another band at block-position infinity.
AA trees were chosen for simplicity.
See: https://en.wikipedia.org/wiki/AA_tree https://arxiv.org/pdf/1412.4882.pdf
Fields§
§root: FloatBandLink
Implementations§
source§impl FloatBandTree
impl FloatBandTree
sourcepub fn new() -> FloatBandTree
pub fn new() -> FloatBandTree
Creates a new float band tree.
sourcepub fn find(&self, block_position: Au) -> Option<FloatBand>
pub fn find(&self, block_position: Au) -> Option<FloatBand>
Returns the first band whose top is less than or equal to the given block_position
.
sourcepub fn find_next(&self, block_position: Au) -> Option<FloatBand>
pub fn find_next(&self, block_position: Au) -> Option<FloatBand>
Returns the first band whose top is strictly greater than to the given block_position
.
sourcepub fn set_range(
&self,
range: &Range<Au>,
side: FloatSide,
new_value: Au,
) -> FloatBandTree
pub fn set_range( &self, range: &Range<Au>, side: FloatSide, new_value: Au, ) -> FloatBandTree
Sets the side values of all bands within the given half-open range to be at least
new_value
.
sourcepub fn insert(&self, band: FloatBand) -> FloatBandTree
pub fn insert(&self, band: FloatBand) -> FloatBandTree
Inserts a new band into the tree. If the band has the same level as a pre-existing one, replaces the existing band with the new one.
Trait Implementations§
source§impl Clone for FloatBandTree
impl Clone for FloatBandTree
source§fn clone(&self) -> FloatBandTree
fn clone(&self) -> FloatBandTree
Returns a copy of the value. Read more
1.0.0 · source§fn clone_from(&mut self, source: &Self)
fn clone_from(&mut self, source: &Self)
Performs copy-assignment from
source
. Read moresource§impl Debug for FloatBandTree
impl Debug for FloatBandTree
Auto Trait Implementations§
impl Freeze for FloatBandTree
impl RefUnwindSafe for FloatBandTree
impl Send for FloatBandTree
impl Sync for FloatBandTree
impl Unpin for FloatBandTree
impl UnwindSafe for FloatBandTree
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
Mutably borrows from an owned value. Read more
source§impl<T> CloneToUninit for Twhere
T: Clone,
impl<T> CloneToUninit for Twhere
T: Clone,
source§unsafe fn clone_to_uninit(&self, dst: *mut T)
unsafe fn clone_to_uninit(&self, dst: *mut T)
🔬This is a nightly-only experimental API. (
clone_to_uninit
)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 moresource§impl<T> MaybeBoxed<Box<T>> for T
impl<T> MaybeBoxed<Box<T>> for T
source§fn maybe_boxed(self) -> Box<T>
fn maybe_boxed(self) -> Box<T>
Convert
source§impl<T> MaybeBoxed<T> for T
impl<T> MaybeBoxed<T> for T
source§fn maybe_boxed(self) -> T
fn maybe_boxed(self) -> T
Convert
source§impl<T> Pointable for T
impl<T> Pointable for T
source§impl<R, P> ReadPrimitive<R> for P
impl<R, P> ReadPrimitive<R> for P
source§fn read_from_little_endian(read: &mut R) -> Result<Self, Error>
fn read_from_little_endian(read: &mut R) -> Result<Self, Error>
Read this value from the supplied reader. Same as
ReadEndian::read_from_little_endian()
.