arnaucube
arnaucube/miden-cryptoPublic Self-hosted repository
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 {}