miden_objects/decoded/
error.rs1use alloc::boxed::Box;
2use core::error::Error;
3
4#[cfg(test)]
5mod tests;
6
7#[derive(Debug, thiserror::Error)]
14#[error("{0}")]
15pub struct VerificationError(#[source] Box<dyn Error + Send + Sync>);
16
17impl VerificationError {
18 pub fn new(source: impl Error + Send + Sync + 'static) -> Self {
19 let source: Box<dyn Error + Send + Sync> = Box::new(source);
20 match source.downcast::<Self>() {
21 Ok(error) => *error,
22 Err(source) => Self(source),
23 }
24 }
25}
26
27macro_rules! impl_verification_error_from {
28 ($($ty:ty),* $(,)?) => {$(
29 impl From<$ty> for VerificationError {
30 fn from(error: $ty) -> Self {
31 Self::new(error)
32 }
33 }
34 )*};
35}
36
37impl_verification_error_from!(
38 core::num::TryFromIntError,
39 miden_protobuf::ConversionError,
40 miden_protocol::assembly::mast::MastForestError,
41 miden_protocol::block::SignedBlockError,
42 miden_protocol::crypto::merkle::MerkleError,
43 miden_protocol::crypto::merkle::mmr::MmrError,
44 miden_protocol::crypto::merkle::smt::SmtLeafError,
45 miden_protocol::crypto::merkle::smt::SmtProofError,
46 miden_protocol::errors::AccountError,
47 miden_protocol::errors::AccountIdError,
48 miden_protocol::errors::AccountPatchError,
49 miden_protocol::errors::AccountTreeError,
50 miden_protocol::errors::AssetError,
51 miden_protocol::errors::BatchAccountUpdateError,
52 miden_protocol::errors::BlockAccountUpdateError,
53 miden_protocol::errors::BlockBodyError,
54 miden_protocol::errors::NoteError,
55 miden_protocol::errors::OutputNoteError,
56 miden_protocol::errors::PartialAssetVaultError,
57 miden_protocol::errors::PartialBlockchainError,
58 miden_protocol::errors::ProposedBatchError,
59 miden_protocol::errors::ProtocolConfigError,
60 miden_protocol::errors::ProvenBatchError,
61 miden_protocol::errors::ProvenTransactionError,
62 miden_protocol::errors::StorageSlotNameError,
63 miden_protocol::errors::TransactionHeaderError,
64 miden_protocol::errors::TransactionInputError,
65 miden_protocol::errors::TransactionOutputError,
66 miden_protocol::errors::ValidatorConfigError,
67 miden_protocol::utils::serde::DeserializationError,
68 super::account::AccountHeaderError,
69 super::account::AccountPatchError,
70 super::account::PartialStorageError,
71 super::account::StorageMapPatchError,
72 super::account::VaultPatchError,
73 super::asset::AssetIdError,
74 super::blockchain::BlockHeaderError,
75 super::blockchain::PartialBlockchainError,
76 super::note::NoteMetadataError,
77 super::primitives::AdviceError,
78 super::primitives::PartialSmtError,
79 super::transaction::ForeignAccountSlotNameError,
80 super::transaction::InputNoteError,
81 super::transaction::ProposedBatchError,
82 super::transaction::ProvenBatchError,
83 super::transaction::TransactionArgsError,
84 super::transaction::TransactionHeaderBuildError,
85 super::transaction::TransactionInputsError,
86);