use thiserror::Error;
use super::{MerkleError, StorageError};
use crate::Word;
#[derive(Debug, Error)]
pub enum LargeSmtError {
#[error("merkle operation failed")]
Merkle(#[from] MerkleError),
#[error("storage operation failed")]
Storage(#[from] StorageError),
#[error("root mismatch: expected {expected:?}, got {actual:?}")]
RootMismatch {
expected: Word,
actual: Word,
},
#[error("storage is not empty")]
StorageNotEmpty,
}
#[cfg(test)]
const _: fn() = || {
fn assert_impl<T: std::error::Error + Send + Sync + 'static>() {}
assert_impl::<LargeSmtError>();
assert_impl::<MerkleError>();
assert_impl::<StorageError>();
};