jasn/parser/
error.rs

1use super::parse::PestError;
2
3/// Errors that can occur during parsing.
4#[derive(Debug, thiserror::Error)]
5#[non_exhaustive]
6pub enum Error {
7    /// Error from the pest parser (syntax errors).
8    #[error("Parse error: {0}")]
9    PestError(#[from] PestError),
10
11    /// Integer parsing or overflow error.
12    #[error("Integer parse error: {0}")]
13    ParseIntError(#[from] std::num::ParseIntError),
14
15    /// Float parsing error.
16    #[error("Float parse error: {0}")]
17    ParseFloatError(#[from] std::num::ParseFloatError),
18
19    /// Base64 decoding error.
20    #[error("Base64 decode error: {0}")]
21    Base64DecodeError(#[from] base64::DecodeError),
22
23    /// Invalid escape sequence in string.
24    #[error("Invalid escape character: {0}")]
25    InvalidEscapeChar(char),
26
27    /// Invalid unicode escape sequence.
28    #[error("Invalid unicode escape: {0}")]
29    InvalidUnicodeEscape(String),
30
31    /// Invalid unicode codepoint.
32    #[error("Invalid unicode codepoint: {0}")]
33    InvalidUnicodeCodepoint(u32),
34
35    /// Hex binary with odd number of digits.
36    #[error("Hex binary must have even number of digits")]
37    OddHexDigits,
38
39    /// Unknown binary encoding.
40    #[error("Unknown binary encoding: {0}")]
41    UnknownBinaryEncoding(String),
42
43    /// Duplicate key in map.
44    #[error("Duplicate key in map: {0}")]
45    DuplicateKey(String),
46
47    /// Invalid timestamp format.
48    #[error("Invalid timestamp '{0}': {1}")]
49    InvalidTimestamp(String, String),
50}
51
52/// Result type for parsing operations.
53pub type Result<T> = std::result::Result<T, Error>;