miden_node_proto/
errors.rs1use std::{any::type_name, num::TryFromIntError};
2
3use miden_objects::crypto::merkle::{SmtLeafError, SmtProofError};
4use thiserror::Error;
5
6#[derive(Debug, Error)]
7pub enum ConversionError {
8 #[error("hex error")]
9 HexError(#[from] hex::FromHexError),
10 #[error("note error")]
11 NoteError(#[from] miden_objects::NoteError),
12 #[error("SMT leaf error")]
13 SmtLeafError(#[from] SmtLeafError),
14 #[error("SMT proof error")]
15 SmtProofError(#[from] SmtProofError),
16 #[error("integer conversion error: {0}")]
17 TryFromIntError(#[from] TryFromIntError),
18 #[error("too much data, expected {expected}, got {got}")]
19 TooMuchData { expected: usize, got: usize },
20 #[error("not enough data, expected {expected}, got {got}")]
21 InsufficientData { expected: usize, got: usize },
22 #[error("value is not in the range 0..MODULUS")]
23 NotAValidFelt,
24 #[error("field `{entity}::{field_name}` is missing")]
25 MissingFieldInProtobufRepresentation {
26 entity: &'static str,
27 field_name: &'static str,
28 },
29 #[error("MMR error")]
30 MmrError(#[from] miden_objects::crypto::merkle::MmrError),
31}
32
33pub trait MissingFieldHelper {
34 fn missing_field(field_name: &'static str) -> ConversionError;
35}
36
37impl<T: prost::Message> MissingFieldHelper for T {
38 fn missing_field(field_name: &'static str) -> ConversionError {
39 ConversionError::MissingFieldInProtobufRepresentation {
40 entity: type_name::<T>(),
41 field_name,
42 }
43 }
44}