opsis 0.1.0

Config-driven framework for blazingly fast visualizations.
Documentation
use thiserror::Error;

#[derive(Debug, Error)]
pub enum OpsisError {
    #[error("io error: {0}")]
    Io(#[from] std::io::Error),

    #[error("toml parse error: {0}")]
    TomlParse(#[from] toml::de::Error),

    #[error("toml serialize error: {0}")]
    TomlSer(#[from] toml::ser::Error),

    #[error("json error: {0}")]
    Json(#[from] serde_json::Error),

    #[error("csv error: {0}")]
    Csv(#[from] csv::Error),

    #[error("unknown chart type: {0}")]
    UnknownChartType(String),

    #[error("missing field: {0}")]
    MissingField(String),

    #[error("field `{field}` not found in dataset (have: {available:?})")]
    UnknownField { field: String, available: Vec<String> },

    #[error("field `{field}` cannot be interpreted as {wanted}")]
    WrongFieldType { field: String, wanted: &'static str },

    #[error("dataset is empty")]
    EmptyDataset,

    #[error("config error: {0}")]
    Config(String),

    #[error("backend error: {0}")]
    Backend(String),
}

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