use thiserror::Error;
pub type Result<T> = core::result::Result<T, Error>;
#[derive(Debug, Error, PartialEq, Eq)]
#[non_exhaustive]
pub enum Error {
#[error("buffer too short: need {need} bytes, have {have} (while parsing {what})")]
BufferTooShort {
need: usize,
have: usize,
what: &'static str,
},
#[error("length {declared} exceeds remaining buffer ({available} bytes) for {what}")]
LengthOverflow {
declared: usize,
available: usize,
what: &'static str,
},
#[error("unexpected op_id {got:#06x} for {what} (expected {expected:#06x})")]
UnexpectedOpId {
got: u16,
what: &'static str,
expected: u16,
},
#[error("reserved field {field} must be {expected:#x}, got {got:#x}")]
ReservedSet {
field: &'static str,
expected: u16,
got: u16,
},
#[error("invalid value for {field}: {reason}")]
InvalidValue {
field: &'static str,
reason: &'static str,
},
#[error("serialize: output buffer too small — need {need}, have {have}")]
OutputBufferTooSmall {
need: usize,
have: usize,
},
}