1#[derive(Debug, Clone, PartialEq, Eq, thiserror::Error)]
5pub enum DecodeError {
6 #[error("unexpected end of input (expected {expected} bytes, got {actual})")]
8 UnexpectedEof { expected: usize, actual: usize },
9
10 #[error("trailing bytes after value (expected {expected} bytes, got {actual})")]
12 TrailingBytes { expected: usize, actual: usize },
13
14 #[error("invalid offset {offset} (data length {len}, fixed region {fixed})")]
16 InvalidOffset {
17 offset: usize,
18 len: usize,
19 fixed: usize,
20 },
21
22 #[error("offsets not monotonic: {prev} > {curr}")]
24 OffsetsNotMonotonic { prev: usize, curr: usize },
25
26 #[error("list length {len} exceeds bound {bound}")]
28 BoundExceeded { len: u64, bound: u64 },
29
30 #[error("fixed vector length mismatch (expected {expected}, got {actual})")]
32 LengthMismatch { expected: usize, actual: usize },
33
34 #[error("invalid selector byte {0}")]
36 InvalidSelector(u8),
37
38 #[error("invalid bool byte {0}")]
40 InvalidBool(u8),
41
42 #[error("bitlist missing trailing sentinel bit")]
44 MissingBitlistSentinel,
45
46 #[error("excess bits set beyond declared length")]
48 ExcessBits,
49
50 #[error("keys not in strictly ascending order")]
52 NotSorted,
53
54 #[error("expected NonZeroU32 but got 0")]
56 ZeroNonZero,
57
58 #[error("custom decode error: {0}")]
60 Custom(&'static str),
61}