use core::fmt;
#[derive(Debug, Clone, Copy, PartialEq, Eq)]
pub enum WireError {
BufferTooSmall {
needed: usize,
available: usize,
},
Incomplete {
needed_min: usize,
available: usize,
},
InvalidVarInt,
UnknownFrameType(u8),
PayloadTooLarge {
declared: u64,
max_allowed: u64,
},
}
impl fmt::Display for WireError {
fn fmt(&self, f: &mut fmt::Formatter<'_>) -> fmt::Result {
match self {
Self::BufferTooSmall { needed, available } => {
write!(f, "buffer too small: need {needed} bytes, have {available}")
}
Self::Incomplete { needed_min, available } => {
write!(f, "incomplete input: need at least {needed_min} bytes, have {available}")
}
Self::InvalidVarInt => write!(f, "malformed VarInt encoding"),
Self::UnknownFrameType(t) => write!(f, "unknown frame type: {t:#04x}"),
Self::PayloadTooLarge { declared, max_allowed } => {
write!(f, "payload too large: {declared} bytes (max {max_allowed})")
}
}
}
}
#[cfg(feature = "std")]
impl std::error::Error for WireError {}