pub struct LazySetWrapper<T>where
T: Node,{ /* private fields */ }
Expand description
A wrapper for nodes to easily implement LazyNode
with an update which sets the range to a value. If the wrapped node implements PersistentNode
the wrapper also implements it.
Trait Implementations§
Source§impl<T> Clone for LazySetWrapper<T>
impl<T> Clone for LazySetWrapper<T>
Source§fn clone(&self) -> LazySetWrapper<T>
fn clone(&self) -> LazySetWrapper<T>
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<T> Debug for LazySetWrapper<T>
impl<T> Debug for LazySetWrapper<T>
Source§impl<T> From<T> for LazySetWrapper<T>where
T: Node,
impl<T> From<T> for LazySetWrapper<T>where
T: Node,
Source§impl<T> LazyNode for LazySetWrapper<T>where
T: Node,
impl<T> LazyNode for LazySetWrapper<T>where
T: Node,
Source§fn lazy_update(&mut self, _i: usize, _j: usize)
fn lazy_update(&mut self, _i: usize, _j: usize)
The following invariant must be met while implementing this method, if
lazy_value
is called immediately after this function then it must return None
. (See Option::take
)Source§fn update_lazy_value(&mut self, new_value: &<Self as Node>::Value)
fn update_lazy_value(&mut self, new_value: &<Self as Node>::Value)
The following invariant must be met while implementing this method, if
lazy_value
is called immediately after this function then it must return Some(&value)
.Source§impl<T> Node for LazySetWrapper<T>where
T: Node,
impl<T> Node for LazySetWrapper<T>where
T: Node,
Source§type Value = <T as Node>::Value
type Value = <T as Node>::Value
This type corresponds to the type of the information to create the node with
Node::initialize
.Source§fn initialize(value: &Self::Value) -> Self
fn initialize(value: &Self::Value) -> Self
Function to create nodes from saved value, it is assumed that even if there’s more data saved in the node,
value
should have enough data to create all of the data of a node of a segment segment of exactly one element.Source§fn combine(a: &Self, b: &Self) -> Self
fn combine(a: &Self, b: &Self) -> Self
Function which will combine nodes
a
and b
, where each corresponds to segments [i,j]
and [j+1,k]
respectively, into a node which corresponds to the segment [i,k]
. This function must be associative (taking * as a symbol for combine, we have that a*(b*c)==(a*b)*c is true), but need not be commutative (it’s not necessarily true that a*b==b*a).Source§impl<T> PersistentNode for LazySetWrapper<T>where
T: PersistentNode,
impl<T> PersistentNode for LazySetWrapper<T>where
T: PersistentNode,
Source§fn left_child(&self) -> usize
fn left_child(&self) -> usize
Gives index of left child.
Source§fn right_child(&self) -> usize
fn right_child(&self) -> usize
Gives index of right child.
Source§fn set_children(&mut self, left: usize, right: usize)
fn set_children(&mut self, left: usize, right: usize)
Sets saved index of both left and right children. (It’s assumed that before a call to this, the node has invalid indices.)
Auto Trait Implementations§
impl<T> Freeze for LazySetWrapper<T>
impl<T> RefUnwindSafe for LazySetWrapper<T>
impl<T> Send for LazySetWrapper<T>
impl<T> Sync for LazySetWrapper<T>
impl<T> Unpin for LazySetWrapper<T>
impl<T> UnwindSafe for LazySetWrapper<T>
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