feat: implement iterator over key-value pairs for TSMT
This commit is contained in:
parent
1bb75e85dd
commit
a03f2b5d5e
2 changed files with 11 additions and 0 deletions
|
@ -214,6 +214,11 @@ impl TieredSmt {
|
|||
// ITERATORS
|
||||
// --------------------------------------------------------------------------------------------
|
||||
|
||||
/// Returns an iterator over all key-value pairs in this [TieredSmt].
|
||||
pub fn iter(&self) -> impl Iterator<Item = &(RpoDigest, Word)> {
|
||||
self.values.iter()
|
||||
}
|
||||
|
||||
/// Returns an iterator over all inner nodes of this [TieredSmt] (i.e., nodes not at depths 16
|
||||
/// 32, 48, or 64).
|
||||
///
|
||||
|
@ -230,6 +235,7 @@ impl TieredSmt {
|
|||
self.nodes.upper_leaves().map(|(index, node)| {
|
||||
let key_prefix = index_to_prefix(index);
|
||||
let (key, value) = self.values.get_first(key_prefix).expect("upper leaf not found");
|
||||
debug_assert_eq!(key_to_index(key, index.depth()), *index);
|
||||
(*node, *key, *value)
|
||||
})
|
||||
}
|
||||
|
|
|
@ -108,6 +108,11 @@ impl ValueStore {
|
|||
None
|
||||
}
|
||||
|
||||
/// Returns an iterator over all key-value pairs in this store.
|
||||
pub fn iter(&self) -> impl Iterator<Item = &(RpoDigest, Word)> {
|
||||
self.values.iter().flat_map(|(_, entry)| entry.iter())
|
||||
}
|
||||
|
||||
// STATE MUTATORS
|
||||
// --------------------------------------------------------------------------------------------
|
||||
|
||||
|
|
Loading…
Add table
Reference in a new issue