miden-crypto/src/merkle/mmr/error.rs
src/merkle/mmr/error.rsRaw
1use core::fmt::{Display, Formatter};
2#[cfg(feature = "std")]
3use std::error::Error;
4
5use crate::merkle::MerkleError;
6
7#[derive(Debug, PartialEq, Eq, Clone)]
8pub enum MmrError {
9 InvalidPosition(usize),
10 InvalidPeaks,
11 InvalidPeak,
12 InvalidUpdate,
13 UnknownPeak,
14 MerkleError(MerkleError),
15}
16
17impl Display for MmrError {
18 fn fmt(&self, fmt: &mut Formatter<'_>) -> Result<(), core::fmt::Error> {
19 match self {
20 MmrError::InvalidPosition(pos) => write!(fmt, "Mmr does not contain position {pos}"),
21 MmrError::InvalidPeaks => write!(fmt, "Invalid peaks count"),
22 MmrError::InvalidPeak => {
23 write!(fmt, "Peak values does not match merkle path computed root")
24 },
25 MmrError::InvalidUpdate => write!(fmt, "Invalid mmr update"),
26 MmrError::UnknownPeak => {
27 write!(fmt, "Peak not in Mmr")
28 },
29 MmrError::MerkleError(err) => write!(fmt, "{}", err),
30 }
31 }
32}
33
34#[cfg(feature = "std")]
35impl Error for MmrError {}