use std::fmt;
use std::io;
#[derive(Debug, thiserror::Error)]
pub enum QvdError {
#[error("io error: {0}")]
Io(#[from] io::Error),
#[error("invalid QVD header: {0}")]
BadHeader(String),
#[error("xml parse error: {0}")]
Xml(String),
#[error("invalid QVD structure: {0}")]
Structure(String),
#[error("unknown symbol type byte 0x{byte:02x} at offset {offset}")]
UnknownSymbolType {
byte: u8,
offset: usize,
},
#[error("invalid utf-8 in symbol at offset {offset}")]
Utf8 {
offset: usize,
},
}
impl QvdError {
pub(crate) fn bad_header(msg: impl fmt::Display) -> Self {
QvdError::BadHeader(msg.to_string())
}
pub(crate) fn structure(msg: impl fmt::Display) -> Self {
QvdError::Structure(msg.to_string())
}
}