zebo 0.5.2

Write data on FS in a performance way
Documentation
use std::{fmt::Display, path::PathBuf};

#[derive(Debug)]
pub enum ZeboError {
    UnsupportedVersion {
        version: u8,
        wanted: u8,
    },
    CannotCreateBaseDir {
        inner_error: std::io::Error,
        base_dir: PathBuf,
    },
    BaseDirIsNotDir {
        base_dir: PathBuf,
    },
    OpenPageFileError {
        inner_error: std::io::Error,
        page_file_path: PathBuf,
    },
    NotEnoughReservedSpace {
        wanted: usize,
        reserved: u32,
    },
    WrongReservedSpace {
        wanted: usize,
        reserved: u32,
    },
    NotEnoughSpace {
        limit: u32,
        new_allocation_requested: u32,
    },
    OperationError(std::io::Error),
    UnexpectedPageId,
    TooManyDocuments {
        max: u32,
        got: u32,
    },
    NoDocToAdd,
}
impl Display for ZeboError {
    fn fmt(&self, f: &mut std::fmt::Formatter<'_>) -> std::fmt::Result {
        match self {
            ZeboError::UnsupportedVersion { version, wanted } => {
                write!(f, "Unsupported version: {version}. Wanted: {wanted}")
            }
            ZeboError::NoDocToAdd => {
                write!(f, "No document to add")
            }
            ZeboError::TooManyDocuments { max, got } => {
                write!(f, "Too many documents: got {got}, max is {max}")
            }
            ZeboError::CannotCreateBaseDir {
                inner_error,
                base_dir,
            } => {
                write!(
                    f,
                    "Cannot create base dir: {base_dir:?}. Error: {inner_error}"
                )
            }
            ZeboError::BaseDirIsNotDir { base_dir } => {
                write!(f, "Base dir is not a directory: {base_dir:?}")
            }
            ZeboError::OpenPageFileError {
                inner_error,
                page_file_path,
            } => {
                write!(
                    f,
                    "Cannot open page file: {page_file_path:?}. Error: {inner_error}"
                )
            }
            ZeboError::NotEnoughReservedSpace { wanted, reserved } => {
                write!(
                    f,
                    "Not enough reserved space. Wanted: {wanted}. Reserved: {reserved}"
                )
            }
            ZeboError::NotEnoughSpace {
                limit,
                new_allocation_requested,
            } => write!(
                f,
                "Not enough space. Limit: {limit}. New allocation requested: {new_allocation_requested}"
            ),
            ZeboError::WrongReservedSpace { reserved, wanted } => write!(
                f,
                "Reserved {reserved} space but given {wanted}. Disalignament are not permitted."
            ),

            ZeboError::OperationError(error) => write!(f, "Operation error: {error}"),
            ZeboError::UnexpectedPageId => write!(f, "Unexpected page ID"),
        }
    }
}
impl std::error::Error for ZeboError {}

pub type Result<T> = std::result::Result<T, ZeboError>;