rschema 0.6.1

A json-schema generator
Documentation
#![allow(dead_code)]

use rschema::{
    Schema,
    Schematic,
};

#[derive(Debug, Schematic)]
enum Enum {
    EmptyTupleVariant(),

    NewTypeVariant(i32),

    TupleVariant(
        #[rschema(
            title = "value",
            format = "myformat",
        )]
        String,

        bool,
    ),

    #[rschema(additional_properties)]
    StructVariant {
        #[rschema(title = "value")]
        value: i32,
    }
}

#[derive(Debug, Schematic)]
enum EnumUnits {
    UnitVariant1,
    UnitVariant2,
    UnitVariant3,
}

#[derive(Debug, Schematic)]
struct EnumProperties {
    #[rschema(title = "Enum")]
    prop_enum: Enum,

    #[rschema(title = "EnumUnits")]
    prop_enum_units: EnumUnits,
}

#[test]
fn it_tests_enum_properties() -> rschema::Result<()> {
    let schema_str = Schema::new::<EnumProperties>("Enum Properties")
        .to_string_pretty()?;
    let schema_str2 = r#"{
  "title": "Enum Properties",
  "type": "object",
  "properties": {
    "prop_enum": {
      "title": "Enum",
      "anyOf": [
        {
          "type": "array",
          "items": [],
          "minItems": 0,
          "maxItems": 0
        },
        {
          "type": "number"
        },
        {
          "type": "array",
          "items": [
            {
              "title": "value",
              "type": "string",
              "format": "myformat"
            },
            {
              "type": "boolean"
            }
          ],
          "minItems": 2,
          "maxItems": 2
        },
        {
          "type": "object",
          "properties": {
            "value": {
              "title": "value",
              "type": "number"
            }
          },
          "additionalProperties": true
        }
      ]
    },
    "prop_enum_units": {
      "title": "EnumUnits",
      "type": "string",
      "enum": [
        "UnitVariant1",
        "UnitVariant2",
        "UnitVariant3"
      ]
    }
  },
  "additionalProperties": false
}"#;

    assert_eq!(schema_str, schema_str2);

    Ok(())
}