pub struct MerkleTree { /* private fields */ }
Expand description
A fully-balanced binary Merkle tree (i.e., a tree where the number of leaves is a power of two).
Implementations§
source§impl MerkleTree
impl MerkleTree
sourcepub fn new<T>(leaves: T) -> Result<Self, MerkleError>
pub fn new<T>(leaves: T) -> Result<Self, MerkleError>
Returns a Merkle tree instantiated from the provided leaves.
§Errors
Returns an error if the number of leaves is smaller than two or is not a power of two.
sourcepub fn depth(&self) -> u8
pub fn depth(&self) -> u8
Returns the depth of this Merkle tree.
Merkle tree of depth 1 has two leaves, depth 2 has four leaves etc.
sourcepub fn get_node(&self, index: NodeIndex) -> Result<RpoDigest, MerkleError>
pub fn get_node(&self, index: NodeIndex) -> Result<RpoDigest, MerkleError>
Returns a node at the specified depth and index value.
§Errors
Returns an error if:
- The specified depth is greater than the depth of the tree.
- The specified index is not valid for the specified depth.
sourcepub fn get_path(&self, index: NodeIndex) -> Result<MerklePath, MerkleError>
pub fn get_path(&self, index: NodeIndex) -> Result<MerklePath, MerkleError>
Returns a Merkle path to the node at the specified depth and index value. The node itself is not included in the path.
§Errors
Returns an error if:
- The specified depth is greater than the depth of the tree.
- The specified value is not valid for the specified depth.
sourcepub fn leaves(&self) -> impl Iterator<Item = (u64, &Word)>
pub fn leaves(&self) -> impl Iterator<Item = (u64, &Word)>
Returns an iterator over the leaves of this MerkleTree.
sourcepub fn inner_nodes(&self) -> InnerNodeIterator<'_>
pub fn inner_nodes(&self) -> InnerNodeIterator<'_>
Returns n iterator over every inner node of this MerkleTree.
The iterator order is unspecified.
sourcepub fn update_leaf<'a>(
&'a mut self,
index_value: u64,
value: Word,
) -> Result<(), MerkleError>
pub fn update_leaf<'a>( &'a mut self, index_value: u64, value: Word, ) -> Result<(), MerkleError>
Replaces the leaf at the specified index with the provided value.
§Errors
Returns an error if the specified index value is not a valid leaf value for this tree.
Trait Implementations§
source§impl Clone for MerkleTree
impl Clone for MerkleTree
source§fn clone(&self) -> MerkleTree
fn clone(&self) -> MerkleTree
1.6.0 · source§fn clone_from(&mut self, source: &Self)
fn clone_from(&mut self, source: &Self)
source
. Read moresource§impl Debug for MerkleTree
impl Debug for MerkleTree
source§impl<T: KvMap<RpoDigest, StoreNode>> From<&MerkleTree> for MerkleStore<T>
impl<T: KvMap<RpoDigest, StoreNode>> From<&MerkleTree> for MerkleStore<T>
source§fn from(value: &MerkleTree) -> Self
fn from(value: &MerkleTree) -> Self
source§impl PartialEq for MerkleTree
impl PartialEq for MerkleTree
source§impl TryFrom<&[[BaseElement; 4]]> for MerkleTree
impl TryFrom<&[[BaseElement; 4]]> for MerkleTree
source§impl TryFrom<&[RpoDigest]> for MerkleTree
impl TryFrom<&[RpoDigest]> for MerkleTree
impl Eq for MerkleTree
impl StructuralPartialEq for MerkleTree
Auto Trait Implementations§
impl Freeze for MerkleTree
impl RefUnwindSafe for MerkleTree
impl Send for MerkleTree
impl Sync for MerkleTree
impl Unpin for MerkleTree
impl UnwindSafe for MerkleTree
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§unsafe fn clone_to_uninit(&self, dst: *mut T)
unsafe fn clone_to_uninit(&self, dst: *mut T)
clone_to_uninit
)