# schema2struct: JSON Schema to Rust Struct Generator

A powerful procedural macro for generating type-safe Rust structs from JSON Schema definitions with compile-time validation and Serde integration.


## Features

-  Automatic struct generation from JSON Schema

-  Compile-time type checking

-  Support for complex nested schemas

-  Constraint validation

-  Zero-cost abstraction


## Installation


Add the following to your `Cargo.toml`:


```toml

[dependencies]

schema2struct = "0.1"

serde = { version = "1.0", features = ["derive"] }

serde_json = "1.0"
```

## Quick Start

### Basic Usage 

```rust
use schema2struct::schema2struct;

schema2struct! {
    struct: User,
    type: object,
    properties: {
        "name": { type: string },
        "age": { type: number, minimum: 0 }
    },
    required: ["name", "age"]
}
```

#### Output

```rust

pub static USER_JSON_VALUE: ::std::sync::LazyLock<::serde_json::Value> = ::std::sync::LazyLock::new(||
{
    ::serde_json::from_str(
            "{\"type\":\"object\",\"properties\":{\"name\":{\"type\":\"string\"},\"age\":{\"type\":\"number\",\"minimum\":0}},\"required\":[\"name\",\"age\"]}",
        )
        .expect("Couldn't convert the text into valid json")
});

#[derive(Deserialize, Serialize, Clone, Debug, Default)]
#[serde(rename_all = "camelCase")]
pub struct User {
    #[serde(alias = "age")]
    pub age: f64,
    #[serde(alias = "name")]
    pub name: String,
}
```
**more complex usages can be found in the examples folder**

## License
Distributed under the MIT License. See LICENSE for more information.