Struct diem_sdk::types::proof::accumulator::InMemoryAccumulator
pub struct InMemoryAccumulator<H> { /* private fields */ }
Expand description
The Accumulator implementation.
Implementations§
§impl<H> InMemoryAccumulator<H>where
H: CryptoHasher,
impl<H> InMemoryAccumulator<H>where H: CryptoHasher,
pub fn new(
frozen_subtree_roots: Vec<HashValue, Global>,
num_leaves: u64
) -> Result<InMemoryAccumulator<H>, Error>
pub fn new( frozen_subtree_roots: Vec<HashValue, Global>, num_leaves: u64 ) -> Result<InMemoryAccumulator<H>, Error>
Constructs a new accumulator with roots of existing frozen subtrees. Returns error if the number of frozen subtree roots does not match the number of leaves.
pub fn from_leaves(leaves: &[HashValue]) -> InMemoryAccumulator<H>
pub fn from_leaves(leaves: &[HashValue]) -> InMemoryAccumulator<H>
Constructs a new accumulator with given leaves.
pub fn append(&self, leaves: &[HashValue]) -> InMemoryAccumulator<H>
pub fn append(&self, leaves: &[HashValue]) -> InMemoryAccumulator<H>
Appends a list of new leaves to an existing accumulator. Since the accumulator is immutable, the existing one remains unchanged and a new one representing the result is returned.
pub fn append_subtrees(
&self,
subtrees: &[HashValue],
num_new_leaves: u64
) -> Result<InMemoryAccumulator<H>, Error>
pub fn append_subtrees( &self, subtrees: &[HashValue], num_new_leaves: u64 ) -> Result<InMemoryAccumulator<H>, Error>
Appends a list of new subtrees to the existing accumulator. This is similar to
append
except that the new leaves themselves are not known and
they are represented by subtrees
. As an example, given the following accumulator that
currently has 10 leaves, the frozen subtree roots and the new subtrees are annotated below.
Note that in this case subtrees[0]
represents two new leaves A
and B
, subtrees[1]
represents four new leaves C
, D
, E
and F
, subtrees[2]
represents four new leaves
G
, H
, I
and J
, and the last subtrees[3]
represents one new leaf K
.
new_root
/ \
/ \
/ \
/ \
/ \
/ \
/ \
/ \
/ \
/ \
/ \
/ \
/ \
old_root o
/ \ / \
/ \ / placeholder
/ \ /
/ \ /
/ \ /
/ \ o
/ \ / \
/ \ / \
/ o / \
frozen_subtree_roots[0] / \ / \
/ \ / \ / \
/ \ / \ / \
o o o subtrees[1] subtrees[2] o
/ \ / \ / \ / \ / \ / \
o o o o frozen_subtree_roots[1] subtrees[0] o o o o o placeholder
/ \ / \ / \ / \ / \ / \ / \ / \ / \ / \ / \
o o o o o o o o o o A B C D E F G H I J K (subtrees[3]) placeholder
pub fn version(&self) -> u64
pub fn frozen_subtree_roots(&self) -> &Vec<HashValue, Global> ⓘ
pub fn frozen_subtree_roots(&self) -> &Vec<HashValue, Global> ⓘ
Returns the set of frozen subtree roots in this accumulator
pub fn num_leaves(&self) -> u64
pub fn num_leaves(&self) -> u64
Returns the total number of leaves in this accumulator.
Trait Implementations§
§impl<H> Clone for InMemoryAccumulator<H>where
H: Clone,
impl<H> Clone for InMemoryAccumulator<H>where H: Clone,
§fn clone(&self) -> InMemoryAccumulator<H>
fn clone(&self) -> InMemoryAccumulator<H>
1.0.0 · source§fn clone_from(&mut self, source: &Self)
fn clone_from(&mut self, source: &Self)
source
. Read more§impl<H> Debug for InMemoryAccumulator<H>where
H: Debug,
impl<H> Debug for InMemoryAccumulator<H>where H: Debug,
§impl<H> Default for InMemoryAccumulator<H>where
H: CryptoHasher,
impl<H> Default for InMemoryAccumulator<H>where H: CryptoHasher,
§fn default() -> InMemoryAccumulator<H>
fn default() -> InMemoryAccumulator<H>
§impl<'de, H> Deserialize<'de> for InMemoryAccumulator<H>
impl<'de, H> Deserialize<'de> for InMemoryAccumulator<H>
§fn deserialize<__D>(
__deserializer: __D
) -> Result<InMemoryAccumulator<H>, <__D as Deserializer<'de>>::Error>where
__D: Deserializer<'de>,
fn deserialize<__D>( __deserializer: __D ) -> Result<InMemoryAccumulator<H>, <__D as Deserializer<'de>>::Error>where __D: Deserializer<'de>,
§impl<H> PartialEq<InMemoryAccumulator<H>> for InMemoryAccumulator<H>
impl<H> PartialEq<InMemoryAccumulator<H>> for InMemoryAccumulator<H>
§fn eq(&self, other: &InMemoryAccumulator<H>) -> bool
fn eq(&self, other: &InMemoryAccumulator<H>) -> bool
self
and other
values to be equal, and is used
by ==
.§impl<H> Serialize for InMemoryAccumulator<H>
impl<H> Serialize for InMemoryAccumulator<H>
§fn serialize<__S>(
&self,
__serializer: __S
) -> Result<<__S as Serializer>::Ok, <__S as Serializer>::Error>where
__S: Serializer,
fn serialize<__S>( &self, __serializer: __S ) -> Result<<__S as Serializer>::Ok, <__S as Serializer>::Error>where __S: Serializer,
impl<H> Eq for InMemoryAccumulator<H>
Auto Trait Implementations§
impl<H> RefUnwindSafe for InMemoryAccumulator<H>where H: RefUnwindSafe,
impl<H> Send for InMemoryAccumulator<H>where H: Send,
impl<H> Sync for InMemoryAccumulator<H>where H: Sync,
impl<H> Unpin for InMemoryAccumulator<H>where H: Unpin,
impl<H> UnwindSafe for InMemoryAccumulator<H>where H: UnwindSafe,
Blanket Implementations§
source§impl<Q, K> Equivalent<K> for Qwhere
Q: Eq + ?Sized,
K: Borrow<Q> + ?Sized,
impl<Q, K> Equivalent<K> for Qwhere Q: Eq + ?Sized, K: Borrow<Q> + ?Sized,
source§fn equivalent(&self, key: &K) -> bool
fn equivalent(&self, key: &K) -> bool
key
and return true
if they are equal.