use thiserror::Error;
#[derive(Debug, Error)]
pub enum Error {
#[error("buffer too short: required {required} bytes, available {available} bytes")]
BufferTooShort {
required: usize,
available: usize,
},
#[error("template mismatch: expected {expected}, actual {actual}")]
TemplateMismatch {
expected: u16,
actual: u16,
},
#[error("schema mismatch: expected {expected}, actual {actual}")]
SchemaMismatch {
expected: u16,
actual: u16,
},
#[error("invalid enum value: tag {tag}, value {value}")]
InvalidEnumValue {
tag: u16,
value: u64,
},
#[error("invalid UTF-8 at offset {offset}")]
InvalidUtf8 {
offset: usize,
},
#[error("offset {offset} out of bounds for buffer of size {size}")]
OffsetOutOfBounds {
offset: usize,
size: usize,
},
#[error("group iteration error: {message}")]
GroupError {
message: String,
},
#[error(
"version incompatible: message version {message_version}, min supported {min_supported}"
)]
VersionIncompatible {
message_version: u16,
min_supported: u16,
},
}
pub type Result<T> = std::result::Result<T, Error>;