ironsbe_core/error.rs
1//! Error types for IronSBE core operations.
2
3use thiserror::Error;
4
5/// Core error type for IronSBE operations.
6#[derive(Debug, Error)]
7pub enum Error {
8 /// Buffer is too short for the requested operation.
9 #[error("buffer too short: required {required} bytes, available {available} bytes")]
10 BufferTooShort {
11 /// Required buffer size in bytes.
12 required: usize,
13 /// Available buffer size in bytes.
14 available: usize,
15 },
16
17 /// Template ID mismatch during decoding.
18 #[error("template mismatch: expected {expected}, actual {actual}")]
19 TemplateMismatch {
20 /// Expected template ID.
21 expected: u16,
22 /// Actual template ID found.
23 actual: u16,
24 },
25
26 /// Schema ID mismatch during decoding.
27 #[error("schema mismatch: expected {expected}, actual {actual}")]
28 SchemaMismatch {
29 /// Expected schema ID.
30 expected: u16,
31 /// Actual schema ID found.
32 actual: u16,
33 },
34
35 /// Invalid enum value encountered.
36 #[error("invalid enum value: tag {tag}, value {value}")]
37 InvalidEnumValue {
38 /// Field tag/ID.
39 tag: u16,
40 /// Invalid value encountered.
41 value: u64,
42 },
43
44 /// Invalid UTF-8 encoding in string field.
45 #[error("invalid UTF-8 at offset {offset}")]
46 InvalidUtf8 {
47 /// Byte offset where invalid UTF-8 was found.
48 offset: usize,
49 },
50
51 /// Offset out of bounds.
52 #[error("offset {offset} out of bounds for buffer of size {size}")]
53 OffsetOutOfBounds {
54 /// Requested offset.
55 offset: usize,
56 /// Buffer size in bytes.
57 size: usize,
58 },
59
60 /// Group iteration error.
61 #[error("group iteration error: {message}")]
62 GroupError {
63 /// Error message.
64 message: String,
65 },
66
67 /// Version incompatibility.
68 #[error(
69 "version incompatible: message version {message_version}, min supported {min_supported}"
70 )]
71 VersionIncompatible {
72 /// Message version.
73 message_version: u16,
74 /// Minimum supported version.
75 min_supported: u16,
76 },
77}
78
79/// Result type alias for IronSBE core operations.
80pub type Result<T> = std::result::Result<T, Error>;