mod error;
pub mod kv;
#[cfg(feature = "state-merkle-sql")]
mod node;
#[cfg(feature = "state-merkle-sql")]
pub mod sql;
use crate::state::Read;
pub use error::MerkleRadixLeafReadError;
pub use kv::{
MerkleLeafIterator, MerkleRadixTree, MerkleState, StateDatabaseError, CHANGE_LOG_INDEX,
DUPLICATE_LOG_INDEX, INDEXES,
};
type IterResult<T> = Result<T, MerkleRadixLeafReadError>;
type LeafIter<T> = Box<dyn Iterator<Item = IterResult<T>>>;
pub trait MerkleRadixLeafReader: Read<StateId = String, Key = String, Value = Vec<u8>> {
fn leaves(
&self,
state_id: &Self::StateId,
subtree: Option<&str>,
) -> IterResult<LeafIter<(Self::Key, Self::Value)>>;
}