#![warn(missing_docs)]
#![forbid(unsafe_code)]
#![warn(clippy::cast_possible_truncation)]
use aversion::util::cbor::CborDataError;
use std::io;
use thiserror::Error;
mod book;
#[doc(inline)]
pub use book::{Book, BookWriter, ChapterIndex, ChapterWriter};
mod read;
#[derive(Debug, Error)]
pub enum BookError {
#[error("IO Error")]
Io(Option<io::Error>),
#[error("Premature EOF")]
Eof,
#[error("Serialize/Deserialize Error")]
Serializer,
#[error("Chapter not found")]
NoChapter,
}
impl From<CborDataError> for BookError {
fn from(e: CborDataError) -> Self {
match e {
CborDataError::Io(opt) => BookError::Io(opt),
CborDataError::Serializer => BookError::Serializer,
CborDataError::Eof => BookError::Eof,
}
}
}
impl From<io::Error> for BookError {
fn from(e: io::Error) -> Self {
BookError::Io(Some(e))
}
}
pub type Result<T> = std::result::Result<T, BookError>;