Merge pull request #183 from 0xPolygonMiden/hacka-move-error-to-mod
error: moved to its own module
This commit is contained in:
commit
85034af1df
2 changed files with 56 additions and 52 deletions
54
src/merkle/error.rs
Normal file
54
src/merkle/error.rs
Normal file
|
@ -0,0 +1,54 @@
|
||||||
|
use crate::{
|
||||||
|
merkle::{MerklePath, NodeIndex, RpoDigest},
|
||||||
|
utils::collections::Vec,
|
||||||
|
};
|
||||||
|
use core::fmt;
|
||||||
|
|
||||||
|
#[derive(Clone, Debug, PartialEq, Eq)]
|
||||||
|
pub enum MerkleError {
|
||||||
|
ConflictingRoots(Vec<RpoDigest>),
|
||||||
|
DepthTooSmall(u8),
|
||||||
|
DepthTooBig(u64),
|
||||||
|
DuplicateValuesForIndex(u64),
|
||||||
|
DuplicateValuesForKey(RpoDigest),
|
||||||
|
InvalidIndex { depth: u8, value: u64 },
|
||||||
|
InvalidDepth { expected: u8, provided: u8 },
|
||||||
|
InvalidPath(MerklePath),
|
||||||
|
InvalidNumEntries(usize, usize),
|
||||||
|
NodeNotInSet(NodeIndex),
|
||||||
|
NodeNotInStore(RpoDigest, NodeIndex),
|
||||||
|
NumLeavesNotPowerOfTwo(usize),
|
||||||
|
RootNotInStore(RpoDigest),
|
||||||
|
}
|
||||||
|
|
||||||
|
impl fmt::Display for MerkleError {
|
||||||
|
fn fmt(&self, f: &mut fmt::Formatter<'_>) -> fmt::Result {
|
||||||
|
use MerkleError::*;
|
||||||
|
match self {
|
||||||
|
ConflictingRoots(roots) => write!(f, "the merkle paths roots do not match {roots:?}"),
|
||||||
|
DepthTooSmall(depth) => write!(f, "the provided depth {depth} is too small"),
|
||||||
|
DepthTooBig(depth) => write!(f, "the provided depth {depth} is too big"),
|
||||||
|
DuplicateValuesForIndex(key) => write!(f, "multiple values provided for key {key}"),
|
||||||
|
DuplicateValuesForKey(key) => write!(f, "multiple values provided for key {key}"),
|
||||||
|
InvalidIndex{ depth, value} => write!(
|
||||||
|
f,
|
||||||
|
"the index value {value} is not valid for the depth {depth}"
|
||||||
|
),
|
||||||
|
InvalidDepth { expected, provided } => write!(
|
||||||
|
f,
|
||||||
|
"the provided depth {provided} is not valid for {expected}"
|
||||||
|
),
|
||||||
|
InvalidPath(_path) => write!(f, "the provided path is not valid"),
|
||||||
|
InvalidNumEntries(max, provided) => write!(f, "the provided number of entries is {provided}, but the maximum for the given depth is {max}"),
|
||||||
|
NodeNotInSet(index) => write!(f, "the node with index ({index}) is not in the set"),
|
||||||
|
NodeNotInStore(hash, index) => write!(f, "the node {hash:?} with index ({index}) is not in the store"),
|
||||||
|
NumLeavesNotPowerOfTwo(leaves) => {
|
||||||
|
write!(f, "the leaves count {leaves} is not a power of 2")
|
||||||
|
}
|
||||||
|
RootNotInStore(root) => write!(f, "the root {:?} is not in the store", root),
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
#[cfg(feature = "std")]
|
||||||
|
impl std::error::Error for MerkleError {}
|
|
@ -3,7 +3,6 @@ use super::{
|
||||||
utils::collections::{vec, BTreeMap, BTreeSet, KvMap, RecordingMap, TryApplyDiff, Vec},
|
utils::collections::{vec, BTreeMap, BTreeSet, KvMap, RecordingMap, TryApplyDiff, Vec},
|
||||||
Felt, StarkField, Word, WORD_SIZE, ZERO,
|
Felt, StarkField, Word, WORD_SIZE, ZERO,
|
||||||
};
|
};
|
||||||
use core::fmt;
|
|
||||||
|
|
||||||
// REEXPORTS
|
// REEXPORTS
|
||||||
// ================================================================================================
|
// ================================================================================================
|
||||||
|
@ -41,57 +40,8 @@ pub use node::InnerNodeInfo;
|
||||||
mod partial_mt;
|
mod partial_mt;
|
||||||
pub use partial_mt::PartialMerkleTree;
|
pub use partial_mt::PartialMerkleTree;
|
||||||
|
|
||||||
// ERRORS
|
mod error;
|
||||||
// ================================================================================================
|
pub use error::MerkleError;
|
||||||
|
|
||||||
#[derive(Clone, Debug, PartialEq, Eq)]
|
|
||||||
pub enum MerkleError {
|
|
||||||
ConflictingRoots(Vec<RpoDigest>),
|
|
||||||
DepthTooSmall(u8),
|
|
||||||
DepthTooBig(u64),
|
|
||||||
DuplicateValuesForIndex(u64),
|
|
||||||
DuplicateValuesForKey(RpoDigest),
|
|
||||||
InvalidIndex { depth: u8, value: u64 },
|
|
||||||
InvalidDepth { expected: u8, provided: u8 },
|
|
||||||
InvalidPath(MerklePath),
|
|
||||||
InvalidNumEntries(usize, usize),
|
|
||||||
NodeNotInSet(NodeIndex),
|
|
||||||
NodeNotInStore(RpoDigest, NodeIndex),
|
|
||||||
NumLeavesNotPowerOfTwo(usize),
|
|
||||||
RootNotInStore(RpoDigest),
|
|
||||||
}
|
|
||||||
|
|
||||||
impl fmt::Display for MerkleError {
|
|
||||||
fn fmt(&self, f: &mut fmt::Formatter<'_>) -> fmt::Result {
|
|
||||||
use MerkleError::*;
|
|
||||||
match self {
|
|
||||||
ConflictingRoots(roots) => write!(f, "the merkle paths roots do not match {roots:?}"),
|
|
||||||
DepthTooSmall(depth) => write!(f, "the provided depth {depth} is too small"),
|
|
||||||
DepthTooBig(depth) => write!(f, "the provided depth {depth} is too big"),
|
|
||||||
DuplicateValuesForIndex(key) => write!(f, "multiple values provided for key {key}"),
|
|
||||||
DuplicateValuesForKey(key) => write!(f, "multiple values provided for key {key}"),
|
|
||||||
InvalidIndex{ depth, value} => write!(
|
|
||||||
f,
|
|
||||||
"the index value {value} is not valid for the depth {depth}"
|
|
||||||
),
|
|
||||||
InvalidDepth { expected, provided } => write!(
|
|
||||||
f,
|
|
||||||
"the provided depth {provided} is not valid for {expected}"
|
|
||||||
),
|
|
||||||
InvalidPath(_path) => write!(f, "the provided path is not valid"),
|
|
||||||
InvalidNumEntries(max, provided) => write!(f, "the provided number of entries is {provided}, but the maximum for the given depth is {max}"),
|
|
||||||
NodeNotInSet(index) => write!(f, "the node with index ({index}) is not in the set"),
|
|
||||||
NodeNotInStore(hash, index) => write!(f, "the node {hash:?} with index ({index}) is not in the store"),
|
|
||||||
NumLeavesNotPowerOfTwo(leaves) => {
|
|
||||||
write!(f, "the leaves count {leaves} is not a power of 2")
|
|
||||||
}
|
|
||||||
RootNotInStore(root) => write!(f, "the root {:?} is not in the store", root),
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
#[cfg(feature = "std")]
|
|
||||||
impl std::error::Error for MerkleError {}
|
|
||||||
|
|
||||||
// HELPER FUNCTIONS
|
// HELPER FUNCTIONS
|
||||||
// ================================================================================================
|
// ================================================================================================
|
||||||
|
|
Loading…
Add table
Reference in a new issue