1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
//! Proc macros for `jtd-derive`.
//!
//! This crate is tightly tied to the `jtd-derive` crate. It's **not meant to be
//! used as a direct dependency** in your project. Instead, please depend on the
//! [`jtd-derive`](https://docs.rs/jtd-derive) crate, which provides documentation
//! and access to the derive macro.

mod derive;
pub(crate) mod iter_ext;

use quote::ToTokens;
use syn::{parse_macro_input, DeriveInput};

#[proc_macro_derive(JsonTypedef, attributes(typedef))]
pub fn query_responses_derive(input: proc_macro::TokenStream) -> proc_macro::TokenStream {
    let input = parse_macro_input!(input as DeriveInput);

    let expanded = match derive::derive(input) {
        Ok(item_impl) => item_impl.into_token_stream(),
        Err(e) => e.into_compile_error(),
    };

    proc_macro::TokenStream::from(expanded)
}