miden-crypto/src/merkle/mod.rs
src/merkle/mod.rsRaw
1use super::{
2 hash::rpo::{Rpo256, RpoDigest as Digest},
3 utils::collections::{BTreeMap, Vec},
4 Felt, Word, ZERO,
5};
6
7mod merkle_tree;
8pub use merkle_tree::MerkleTree;
9
10mod merkle_path_set;
11pub use merkle_path_set::MerklePathSet;
12
13// ERRORS
14// ================================================================================================
15
16#[derive(Clone, Debug)]
17pub enum MerkleError {
18 DepthTooSmall,
19 DepthTooBig(u32),
20 NumLeavesNotPowerOfTwo(usize),
21 InvalidIndex(u32, u64),
22 InvalidDepth(u32, u32),
23 InvalidPath(Vec<Word>),
24 NodeNotInSet(u64),
25}
26
27// HELPER FUNCTIONS
28// ================================================================================================
29
30#[cfg(test)]
31const fn int_to_node(value: u64) -> Word {
32 [Felt::new(value), ZERO, ZERO, ZERO]
33}