use crate::ebook::errors::UtfError;
use crate::ebook::resource::Resource;
use std::io;
use std::path::PathBuf;
pub type ArchiveResult<T> = Result<T, ArchiveError>;
#[non_exhaustive]
#[derive(thiserror::Error, Debug)]
pub enum ArchiveError {
#[error("[InvalidUtf8Resource - `{resource}`]: Resource value cannot be read as UTF-8")]
InvalidUtf8Resource {
source: UtfError,
resource: Resource<'static>,
},
#[error("[InvalidResource - `{resource}`]: {source}")]
InvalidResource {
source: io::Error,
resource: Resource<'static>,
},
#[error("[CannotRead - `{resource:?}`]: {source}")]
CannotRead {
source: io::Error,
resource: Resource<'static>,
},
#[error("[UnreadableArchive - `{path:?}`]: {source}")]
UnreadableArchive {
source: io::Error,
path: Option<PathBuf>,
},
}