jtd_derive_macros/
lib.rs

1//! Proc macros for `jtd-derive`.
2//!
3//! This crate is tightly tied to the `jtd-derive` crate. It's **not meant to be
4//! used as a direct dependency** in your project. Instead, please depend on the
5//! [`jtd-derive`](https://docs.rs/jtd-derive) crate, which provides documentation
6//! and access to the derive macro.
7
8mod derive;
9pub(crate) mod iter_ext;
10
11use quote::ToTokens;
12use syn::{parse_macro_input, DeriveInput};
13
14#[proc_macro_derive(JsonTypedef, attributes(typedef))]
15pub fn query_responses_derive(input: proc_macro::TokenStream) -> proc_macro::TokenStream {
16    let input = parse_macro_input!(input as DeriveInput);
17
18    let expanded = match derive::derive(input) {
19        Ok(item_impl) => item_impl.into_token_stream(),
20        Err(e) => e.into_compile_error(),
21    };
22
23    proc_macro::TokenStream::from(expanded)
24}