cellulite 0.3.2

Store and retrieve geojson in a memory mapped database
Documentation
use h3o::error::{InvalidGeometry, PlotterError};

use crate::{ItemId, metadata::Version};

#[derive(Debug, thiserror::Error)]
pub enum Error {
    // User errors
    #[error("The build was canceled")]
    BuildCanceled,
    #[error(
        "Version mismatch while building, was expecting v{} but instead got v{}. Upgrade the version before building.",
        Version::default(), .0
    )]
    VersionMismatchOnBuild(Version),
    #[error(
        "Tried to open a cellulite database, but it's inner database don't exists yet. Call `create_from_env` first."
    )]
    DatabaseDoesntExists,

    // External errors, sometimes it's a user error and sometimes it's not
    #[error(transparent)]
    Heed(#[from] heed::Error),
    #[error(transparent)]
    InvalidGeometry(#[from] InvalidGeometry),
    #[error(transparent)]
    InvalidGeoJson(#[from] Box<geojson::Error>),

    // Internal errors
    #[error("unexpected document id `{0}` missing at `{1}`")]
    InternalDocIdMissing(ItemId, String),
    #[error("Error with document `{0}`, could not convert it's line(s) to cells because: {1}\n{2}")]
    CannotConvertLineToCell(ItemId, PlotterError, String),
}

#[macro_export]
macro_rules! pos {
    () => {
        format!("{}:{}:{}", file!(), line!(), column!())
    };
}