restricted_sparse_merkle_tree/
traits.rs1use crate::{
2 error::Error,
3 tree::{BranchNode, LeafNode},
4 H256,
5};
6
7pub trait Hasher {
9 fn write_h256(&mut self, h: &H256);
10 fn finish(self) -> H256;
11}
12
13pub trait Value {
15 fn to_h256(&self) -> H256;
16 fn zero() -> Self;
17}
18
19impl Value for H256 {
20 fn to_h256(&self) -> H256 {
21 *self
22 }
23 fn zero() -> Self {
24 H256::zero()
25 }
26}
27
28pub trait Store<V> {
30 fn get_branch(&self, node: &H256) -> Result<Option<BranchNode>, Error>;
31 fn get_leaf(&self, leaf_hash: &H256) -> Result<Option<LeafNode<V>>, Error>;
32 fn insert_branch(&mut self, node: H256, branch: BranchNode) -> Result<(), Error>;
33 fn insert_leaf(&mut self, leaf_hash: H256, leaf: LeafNode<V>) -> Result<(), Error>;
34 fn remove_branch(&mut self, node: &H256) -> Result<(), Error>;
35 fn remove_leaf(&mut self, leaf_hash: &H256) -> Result<(), Error>;
36}