abe_policy 3.0.3

Policy and attributes definition for ABE cryptosystems
Documentation
//! Define this crate error type.

use thiserror::Error;
#[cfg(feature = "wasm_bindgen")]
use wasm_bindgen::JsValue;

/// Crate error type.
#[derive(Error, Debug)]
pub enum Error {
    #[error("attribute not found: {0}")]
    AttributeNotFound(String),
    #[error("{} is missing{}",
        .item.clone().unwrap_or_else(|| "attribute".to_string()),
        match .axis_name {
            Some(axis) => format!(" in axis {axis}"),
            None => String::new(),
    })]
    MissingAttribute {
        item: Option<String>,
        axis_name: Option<String>,
    },
    #[error("No axis given")]
    MissingAxis,
    #[error("unsupported operator {0}")]
    UnsupportedOperator(String),
    #[error("attribute capacity overflow")]
    CapacityOverflow,
    #[error("policy {0} already exists")]
    ExistingPolicy(String),
    #[error("invalid boolean expression: {0}")]
    InvalidBooleanExpression(String),
    #[error("invalid attribute: {0}")]
    InvalidAttribute(String),
    #[error("invalid axis: {0}")]
    InvalidAxis(String),
    #[error("deserialization error: {0}")]
    DeserializationError(serde_json::Error),
}

#[cfg(feature = "wasm_bindgen")]
impl From<Error> for JsValue {
    fn from(e: Error) -> Self {
        Self::from_str(&e.to_string())
    }
}