use thiserror::Error;
#[derive(Debug, Error)]
pub enum Error {
#[error("I/O error: {0}")]
Io(#[from] std::io::Error),
#[error("unexpected end of data at offset {offset}: expected {expected} bytes, got {actual}")]
UnexpectedEof {
offset: u64,
expected: usize,
actual: usize,
},
#[error("invalid data source range: {0}")]
InvalidRange(String),
#[error("invalid format: {0}")]
InvalidFormat(String),
#[error("invalid source reference: {0}")]
InvalidSourceReference(String),
#[error("not found: {0}")]
NotFound(String),
#[error("unsupported: {0}")]
Unsupported(String),
}
pub type Result<T> = std::result::Result<T, Error>;