json-utils 0.3.5

An utility crate for working with JSON and JSON-schemas
Documentation
use std::collections::HashMap;

use crate::json::JsValue;

use super::*;

#[derive(Debug, Clone, PartialEq, Serialize, Deserialize)]
#[serde(untagged)]
pub enum SchemaNode {
    ValidNode(ValidNode),
    InvalidNode(InvalidNode),
}

#[derive(Debug, Clone, PartialEq, Serialize, Deserialize)]
#[serde(tag = "type")]
pub enum ValidNode {
    #[serde(rename = "any")]
    AnyNode(AnyNode),

    #[serde(rename = "null")]
    NullNode(NullNode),

    #[serde(rename = "boolean")]
    BooleanNode(BooleanNode),

    #[serde(rename = "string")]
    StringNode(StringNode),

    #[serde(rename = "number")]
    NumberNode(NumberNode),

    #[serde(rename = "integer")]
    IntegerNode(IntegerNode),

    #[serde(rename = "array")]
    ArrayNode(ArrayNode),

    #[serde(rename = "object")]
    ObjectNode(ObjectNode),
}

#[derive(Default, Debug, Clone, PartialEq, Serialize, Deserialize)]
pub struct InvalidNode {
    #[serde(flatten)]
    pub fields: HashMap<String, JsValue>,
}

impl_extra_props!(InvalidNode, fields);