Struct diem_sdk::types::proof::accumulator::InMemoryAccumulator [−][src]
pub struct InMemoryAccumulator<H> { /* fields omitted */ }
Expand description
The Accumulator implementation.
Implementations
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.
Constructs a new accumulator with given leaves.
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
Returns the set of frozen subtree roots in this accumulator
Returns the total number of leaves in this accumulator.
Trait Implementations
Returns the “default value” for a type. Read more
pub fn deserialize<__D>(
__deserializer: __D
) -> Result<InMemoryAccumulator<H>, <__D as Deserializer<'de>>::Error> where
__D: Deserializer<'de>,
pub fn deserialize<__D>(
__deserializer: __D
) -> Result<InMemoryAccumulator<H>, <__D as Deserializer<'de>>::Error> where
__D: Deserializer<'de>,
Deserialize this value from the given Serde deserializer. Read more
pub fn serialize<__S>(
&self,
__serializer: __S
) -> Result<<__S as Serializer>::Ok, <__S as Serializer>::Error> where
__S: Serializer,
pub fn serialize<__S>(
&self,
__serializer: __S
) -> Result<<__S as Serializer>::Ok, <__S as Serializer>::Error> where
__S: Serializer,
Serialize this value into the given Serde serializer. Read more
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
Mutably borrows from an owned value. Read more
Compare self to key
and return true
if they are equal.
Instruments this type with the provided Span
, returning an
Instrumented
wrapper. Read more
Generates a hash used only for tests.
pub fn vzip(self) -> V
Attaches the provided Subscriber
to this type, returning a
WithDispatch
wrapper. Read more
Attaches the current default Subscriber
to this type, returning a
WithDispatch
wrapper. Read more