use thiserror::Error;
#[derive(Debug, Error)]
pub enum BindError {
#[error("buffer underflow: needed {needed} bytes, got {available}")]
BufferUnderflow {
needed: usize,
available: usize,
},
#[error("invalid data: {0}")]
InvalidData(String),
#[error("string encoding error: {0}")]
StringEncoding(String),
#[error("unsupported type: {0}")]
UnsupportedType(String),
#[error(
"binding version mismatch: header {{ magic: 0x{found_magic:02X}, \
version: 0x{found_version:02X} }} but this build expects \
{{ magic: 0x{expected_magic:02X}, version: 0x{expected_version:02X} }}"
)]
VersionMismatch {
expected_magic: u8,
expected_version: u8,
found_magic: u8,
found_version: u8,
},
}
pub type Result<T> = std::result::Result<T, BindError>;