Skip to main content

iso8583_codec_rs/
error.rs

1use thiserror::Error;
2
3#[derive(Error, Debug)]
4pub enum Iso8583Error {
5    #[error("invalid MTI: {0}")]
6    InvalidMti(String),
7
8    #[error("invalid bitmap: {0}")]
9    InvalidBitmap(String),
10
11    #[error("field DE{de}: {message}")]
12    FieldError { de: u32, message: String },
13
14    #[error("unknown field DE{0}")]
15    UnknownField(u32),
16
17    #[error("encoding error: {0}")]
18    EncodingError(String),
19
20    #[error("padding error: {0}")]
21    PaddingError(String),
22
23    #[error("prefix error: {0}")]
24    PrefixError(String),
25
26    #[error("composite field error DE{de}: {message}")]
27    CompositeError { de: u32, message: String },
28
29    #[error("spec error: {0}")]
30    SpecError(String),
31
32    #[error("hex decode error: {0}")]
33    HexError(#[from] hex::FromHexError),
34
35    #[error("json error: {0}")]
36    JsonError(#[from] serde_json::Error),
37
38    #[error("data too short: expected at least {expected} bytes, got {actual}")]
39    DataTooShort { expected: usize, actual: usize },
40}
41
42pub type Result<T> = std::result::Result<T, Iso8583Error>;