pub struct IndexedMerkleTree<H, I>where
H: Hasher,
I: CheckedAdd + CheckedSub + Copy + Clone + PartialOrd + ToBytes + TryFrom<usize> + Unsigned + Debug + Into<usize>,{
pub merkle_tree: MerkleTree<H>,
pub indexed_array: IndexedArray<H, I>,
/* private fields */
}Fields§
§merkle_tree: MerkleTree<H>§indexed_array: IndexedArray<H, I>Implementations§
Source§impl<H, I> IndexedMerkleTree<H, I>where
H: Hasher,
I: CheckedAdd + CheckedSub + Copy + Clone + PartialOrd + ToBytes + TryFrom<usize> + Unsigned + Debug + Into<usize>,
impl<H, I> IndexedMerkleTree<H, I>where
H: Hasher,
I: CheckedAdd + CheckedSub + Copy + Clone + PartialOrd + ToBytes + TryFrom<usize> + Unsigned + Debug + Into<usize>,
pub fn new( height: usize, canopy_depth: usize, ) -> Result<Self, IndexedReferenceMerkleTreeError>
pub fn get_path_of_leaf( &self, index: usize, full: bool, ) -> Result<Vec<[u8; 32]>, ReferenceMerkleTreeError>
pub fn get_proof_of_leaf( &self, index: usize, full: bool, ) -> Result<Vec<[u8; 32]>, ReferenceMerkleTreeError>
pub fn root(&self) -> [u8; 32]
pub fn update( &mut self, new_low_element: &IndexedElement<I>, new_element: &IndexedElement<I>, new_element_next_value: &BigUint, ) -> Result<(), IndexedReferenceMerkleTreeError>
pub fn append( &mut self, value: &BigUint, ) -> Result<(), IndexedReferenceMerkleTreeError>
pub fn get_non_inclusion_proof( &self, value: &BigUint, ) -> Result<NonInclusionProof, IndexedReferenceMerkleTreeError>
pub fn verify_non_inclusion_proof( &self, proof: &NonInclusionProof, ) -> Result<(), IndexedReferenceMerkleTreeError>
Trait Implementations§
Source§impl<H, I> Clone for IndexedMerkleTree<H, I>where
H: Hasher + Clone,
I: CheckedAdd + CheckedSub + Copy + Clone + PartialOrd + ToBytes + TryFrom<usize> + Unsigned + Debug + Into<usize> + Clone,
impl<H, I> Clone for IndexedMerkleTree<H, I>where
H: Hasher + Clone,
I: CheckedAdd + CheckedSub + Copy + Clone + PartialOrd + ToBytes + TryFrom<usize> + Unsigned + Debug + Into<usize> + Clone,
Source§fn clone(&self) -> IndexedMerkleTree<H, I>
fn clone(&self) -> IndexedMerkleTree<H, I>
Returns a duplicate 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<H, I> Debug for IndexedMerkleTree<H, I>where
H: Hasher + Debug,
I: CheckedAdd + CheckedSub + Copy + Clone + PartialOrd + ToBytes + TryFrom<usize> + Unsigned + Debug + Into<usize> + Debug,
impl<H, I> Debug for IndexedMerkleTree<H, I>where
H: Hasher + Debug,
I: CheckedAdd + CheckedSub + Copy + Clone + PartialOrd + ToBytes + TryFrom<usize> + Unsigned + Debug + Into<usize> + Debug,
Auto Trait Implementations§
impl<H, I> Freeze for IndexedMerkleTree<H, I>where
I: Freeze,
impl<H, I> RefUnwindSafe for IndexedMerkleTree<H, I>where
I: RefUnwindSafe,
H: RefUnwindSafe,
impl<H, I> Send for IndexedMerkleTree<H, I>
impl<H, I> Sync for IndexedMerkleTree<H, I>
impl<H, I> Unpin for IndexedMerkleTree<H, I>
impl<H, I> UnwindSafe for IndexedMerkleTree<H, I>where
I: UnwindSafe,
H: UnwindSafe,
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§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 more