pub struct StorageUpdates { /* private fields */ }Expand description
Represents a collection of changes to be applied atomically to an SMT storage backend.
This struct is used to batch multiple updates (to leaves, subtrees, and the SMT root) ensuring that they are persisted together as a single, consistent transaction. It also tracks deltas for leaf and entry counts, allowing storage implementations to maintain these counts accurately.
Implementations§
Source§impl StorageUpdates
impl StorageUpdates
Sourcepub fn new(new_root: Word) -> StorageUpdates
pub fn new(new_root: Word) -> StorageUpdates
Creates a new StorageUpdates with the specified root hash and default empty updates.
This constructor is ideal for incremental building where you’ll add updates
one by one using the convenience methods like insert_leaf() and insert_subtree().
Sourcepub fn from_parts(
leaf_updates: BTreeMap<u64, Option<SmtLeaf>>,
subtree_updates: BTreeMap<NodeIndex, Option<Subtree>>,
new_root: Word,
leaf_count_delta: isize,
entry_count_delta: isize,
) -> StorageUpdates
pub fn from_parts( leaf_updates: BTreeMap<u64, Option<SmtLeaf>>, subtree_updates: BTreeMap<NodeIndex, Option<Subtree>>, new_root: Word, leaf_count_delta: isize, entry_count_delta: isize, ) -> StorageUpdates
Creates a new StorageUpdates from pre-computed components.
This constructor is ideal for bulk operations where you already have the complete maps of updates and calculated deltas, such as when applying a batch of mutations.
Sourcepub fn insert_leaf(&mut self, index: u64, leaf: SmtLeaf)
pub fn insert_leaf(&mut self, index: u64, leaf: SmtLeaf)
Adds a leaf insertion/update to the batch.
Sourcepub fn remove_leaf(&mut self, index: u64)
pub fn remove_leaf(&mut self, index: u64)
Adds a leaf removal to the batch.
Sourcepub fn insert_subtree(&mut self, subtree: Subtree)
pub fn insert_subtree(&mut self, subtree: Subtree)
Adds a subtree insertion/update to the batch.
Sourcepub fn remove_subtree(&mut self, index: NodeIndex)
pub fn remove_subtree(&mut self, index: NodeIndex)
Adds a subtree removal to the batch.
Sourcepub fn leaf_update_count(&self) -> usize
pub fn leaf_update_count(&self) -> usize
Returns the number of leaf updates in this batch.
Sourcepub fn subtree_update_count(&self) -> usize
pub fn subtree_update_count(&self) -> usize
Returns the number of subtree updates in this batch.
Sourcepub fn leaf_updates(&self) -> &BTreeMap<u64, Option<SmtLeaf>>
pub fn leaf_updates(&self) -> &BTreeMap<u64, Option<SmtLeaf>>
Returns a reference to the leaf updates map.
Sourcepub fn subtree_updates(&self) -> &BTreeMap<NodeIndex, Option<Subtree>>
pub fn subtree_updates(&self) -> &BTreeMap<NodeIndex, Option<Subtree>>
Returns a reference to the subtree updates map.
Sourcepub fn leaf_count_delta(&self) -> isize
pub fn leaf_count_delta(&self) -> isize
Returns the leaf count delta.
Sourcepub fn entry_count_delta(&self) -> isize
pub fn entry_count_delta(&self) -> isize
Returns the entry count delta.
Sourcepub fn set_leaf_count_delta(&mut self, delta: isize)
pub fn set_leaf_count_delta(&mut self, delta: isize)
Sets the leaf count delta.
Sourcepub fn set_entry_count_delta(&mut self, delta: isize)
pub fn set_entry_count_delta(&mut self, delta: isize)
Sets the entry count delta.
Sourcepub fn adjust_leaf_count_delta(&mut self, adjustment: isize)
pub fn adjust_leaf_count_delta(&mut self, adjustment: isize)
Adjusts the leaf count delta by the specified amount.
Sourcepub fn adjust_entry_count_delta(&mut self, adjustment: isize)
pub fn adjust_entry_count_delta(&mut self, adjustment: isize)
Adjusts the entry count delta by the specified amount.
Sourcepub fn into_leaf_updates(self) -> BTreeMap<u64, Option<SmtLeaf>>
pub fn into_leaf_updates(self) -> BTreeMap<u64, Option<SmtLeaf>>
Consumes this StorageUpdates and returns the leaf updates map.
Sourcepub fn into_subtree_updates(self) -> BTreeMap<NodeIndex, Option<Subtree>>
pub fn into_subtree_updates(self) -> BTreeMap<NodeIndex, Option<Subtree>>
Consumes this StorageUpdates and returns the subtree updates map.
Sourcepub fn into_parts(self) -> StorageUpdateParts
pub fn into_parts(self) -> StorageUpdateParts
Consumes this StorageUpdates and returns its owned parts as a StorageUpdateParts.
Trait Implementations§
Source§impl Clone for StorageUpdates
impl Clone for StorageUpdates
Source§fn clone(&self) -> StorageUpdates
fn clone(&self) -> StorageUpdates
1.0.0 · Source§fn clone_from(&mut self, source: &Self)
fn clone_from(&mut self, source: &Self)
source. Read moreSource§impl Debug for StorageUpdates
impl Debug for StorageUpdates
Source§impl Default for StorageUpdates
impl Default for StorageUpdates
Source§fn default() -> StorageUpdates
fn default() -> StorageUpdates
Auto Trait Implementations§
impl Freeze for StorageUpdates
impl RefUnwindSafe for StorageUpdates
impl Send for StorageUpdates
impl Sync for StorageUpdates
impl Unpin for StorageUpdates
impl UnwindSafe for StorageUpdates
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<T> CloneToUninit for Twhere
T: Clone,
impl<T> CloneToUninit for Twhere
T: Clone,
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>
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>
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<D> OwoColorize for D
impl<D> OwoColorize for D
Source§fn fg<C>(&self) -> FgColorDisplay<'_, C, Self>where
C: Color,
fn fg<C>(&self) -> FgColorDisplay<'_, C, Self>where
C: Color,
Source§fn bg<C>(&self) -> BgColorDisplay<'_, C, Self>where
C: Color,
fn bg<C>(&self) -> BgColorDisplay<'_, C, Self>where
C: Color,
Source§fn black(&self) -> FgColorDisplay<'_, Black, Self>
fn black(&self) -> FgColorDisplay<'_, Black, Self>
Source§fn on_black(&self) -> BgColorDisplay<'_, Black, Self>
fn on_black(&self) -> BgColorDisplay<'_, Black, Self>
Source§fn red(&self) -> FgColorDisplay<'_, Red, Self>
fn red(&self) -> FgColorDisplay<'_, Red, Self>
Source§fn on_red(&self) -> BgColorDisplay<'_, Red, Self>
fn on_red(&self) -> BgColorDisplay<'_, Red, Self>
Source§fn green(&self) -> FgColorDisplay<'_, Green, Self>
fn green(&self) -> FgColorDisplay<'_, Green, Self>
Source§fn on_green(&self) -> BgColorDisplay<'_, Green, Self>
fn on_green(&self) -> BgColorDisplay<'_, Green, Self>
Source§fn yellow(&self) -> FgColorDisplay<'_, Yellow, Self>
fn yellow(&self) -> FgColorDisplay<'_, Yellow, Self>
Source§fn on_yellow(&self) -> BgColorDisplay<'_, Yellow, Self>
fn on_yellow(&self) -> BgColorDisplay<'_, Yellow, Self>
Source§fn blue(&self) -> FgColorDisplay<'_, Blue, Self>
fn blue(&self) -> FgColorDisplay<'_, Blue, Self>
Source§fn on_blue(&self) -> BgColorDisplay<'_, Blue, Self>
fn on_blue(&self) -> BgColorDisplay<'_, Blue, Self>
Source§fn magenta(&self) -> FgColorDisplay<'_, Magenta, Self>
fn magenta(&self) -> FgColorDisplay<'_, Magenta, Self>
Source§fn on_magenta(&self) -> BgColorDisplay<'_, Magenta, Self>
fn on_magenta(&self) -> BgColorDisplay<'_, Magenta, Self>
Source§fn purple(&self) -> FgColorDisplay<'_, Magenta, Self>
fn purple(&self) -> FgColorDisplay<'_, Magenta, Self>
Source§fn on_purple(&self) -> BgColorDisplay<'_, Magenta, Self>
fn on_purple(&self) -> BgColorDisplay<'_, Magenta, Self>
Source§fn cyan(&self) -> FgColorDisplay<'_, Cyan, Self>
fn cyan(&self) -> FgColorDisplay<'_, Cyan, Self>
Source§fn on_cyan(&self) -> BgColorDisplay<'_, Cyan, Self>
fn on_cyan(&self) -> BgColorDisplay<'_, Cyan, Self>
Source§fn white(&self) -> FgColorDisplay<'_, White, Self>
fn white(&self) -> FgColorDisplay<'_, White, Self>
Source§fn on_white(&self) -> BgColorDisplay<'_, White, Self>
fn on_white(&self) -> BgColorDisplay<'_, White, Self>
Source§fn default_color(&self) -> FgColorDisplay<'_, Default, Self>
fn default_color(&self) -> FgColorDisplay<'_, Default, Self>
Source§fn on_default_color(&self) -> BgColorDisplay<'_, Default, Self>
fn on_default_color(&self) -> BgColorDisplay<'_, Default, Self>
Source§fn bright_black(&self) -> FgColorDisplay<'_, BrightBlack, Self>
fn bright_black(&self) -> FgColorDisplay<'_, BrightBlack, Self>
Source§fn on_bright_black(&self) -> BgColorDisplay<'_, BrightBlack, Self>
fn on_bright_black(&self) -> BgColorDisplay<'_, BrightBlack, Self>
Source§fn bright_red(&self) -> FgColorDisplay<'_, BrightRed, Self>
fn bright_red(&self) -> FgColorDisplay<'_, BrightRed, Self>
Source§fn on_bright_red(&self) -> BgColorDisplay<'_, BrightRed, Self>
fn on_bright_red(&self) -> BgColorDisplay<'_, BrightRed, Self>
Source§fn bright_green(&self) -> FgColorDisplay<'_, BrightGreen, Self>
fn bright_green(&self) -> FgColorDisplay<'_, BrightGreen, Self>
Source§fn on_bright_green(&self) -> BgColorDisplay<'_, BrightGreen, Self>
fn on_bright_green(&self) -> BgColorDisplay<'_, BrightGreen, Self>
Source§fn bright_yellow(&self) -> FgColorDisplay<'_, BrightYellow, Self>
fn bright_yellow(&self) -> FgColorDisplay<'_, BrightYellow, Self>
Source§fn on_bright_yellow(&self) -> BgColorDisplay<'_, BrightYellow, Self>
fn on_bright_yellow(&self) -> BgColorDisplay<'_, BrightYellow, Self>
Source§fn bright_blue(&self) -> FgColorDisplay<'_, BrightBlue, Self>
fn bright_blue(&self) -> FgColorDisplay<'_, BrightBlue, Self>
Source§fn on_bright_blue(&self) -> BgColorDisplay<'_, BrightBlue, Self>
fn on_bright_blue(&self) -> BgColorDisplay<'_, BrightBlue, Self>
Source§fn bright_magenta(&self) -> FgColorDisplay<'_, BrightMagenta, Self>
fn bright_magenta(&self) -> FgColorDisplay<'_, BrightMagenta, Self>
Source§fn on_bright_magenta(&self) -> BgColorDisplay<'_, BrightMagenta, Self>
fn on_bright_magenta(&self) -> BgColorDisplay<'_, BrightMagenta, Self>
Source§fn bright_purple(&self) -> FgColorDisplay<'_, BrightMagenta, Self>
fn bright_purple(&self) -> FgColorDisplay<'_, BrightMagenta, Self>
Source§fn on_bright_purple(&self) -> BgColorDisplay<'_, BrightMagenta, Self>
fn on_bright_purple(&self) -> BgColorDisplay<'_, BrightMagenta, Self>
Source§fn bright_cyan(&self) -> FgColorDisplay<'_, BrightCyan, Self>
fn bright_cyan(&self) -> FgColorDisplay<'_, BrightCyan, Self>
Source§fn on_bright_cyan(&self) -> BgColorDisplay<'_, BrightCyan, Self>
fn on_bright_cyan(&self) -> BgColorDisplay<'_, BrightCyan, Self>
Source§fn bright_white(&self) -> FgColorDisplay<'_, BrightWhite, Self>
fn bright_white(&self) -> FgColorDisplay<'_, BrightWhite, Self>
Source§fn on_bright_white(&self) -> BgColorDisplay<'_, BrightWhite, Self>
fn on_bright_white(&self) -> BgColorDisplay<'_, BrightWhite, Self>
Source§fn bold(&self) -> BoldDisplay<'_, Self>
fn bold(&self) -> BoldDisplay<'_, Self>
Source§fn dimmed(&self) -> DimDisplay<'_, Self>
fn dimmed(&self) -> DimDisplay<'_, Self>
Source§fn italic(&self) -> ItalicDisplay<'_, Self>
fn italic(&self) -> ItalicDisplay<'_, Self>
Source§fn underline(&self) -> UnderlineDisplay<'_, Self>
fn underline(&self) -> UnderlineDisplay<'_, Self>
Source§fn blink(&self) -> BlinkDisplay<'_, Self>
fn blink(&self) -> BlinkDisplay<'_, Self>
Source§fn blink_fast(&self) -> BlinkFastDisplay<'_, Self>
fn blink_fast(&self) -> BlinkFastDisplay<'_, Self>
Source§fn reversed(&self) -> ReversedDisplay<'_, Self>
fn reversed(&self) -> ReversedDisplay<'_, Self>
Source§fn strikethrough(&self) -> StrikeThroughDisplay<'_, Self>
fn strikethrough(&self) -> StrikeThroughDisplay<'_, Self>
Source§fn color<Color>(&self, color: Color) -> FgDynColorDisplay<'_, Color, Self>where
Color: DynColor,
fn color<Color>(&self, color: Color) -> FgDynColorDisplay<'_, Color, Self>where
Color: DynColor,
OwoColorize::fg or
a color-specific method, such as OwoColorize::green, Read moreSource§fn on_color<Color>(&self, color: Color) -> BgDynColorDisplay<'_, Color, Self>where
Color: DynColor,
fn on_color<Color>(&self, color: Color) -> BgDynColorDisplay<'_, Color, Self>where
Color: DynColor,
OwoColorize::bg or
a color-specific method, such as OwoColorize::on_yellow, Read more