1#![warn(missing_docs)]
2
3mod generics;
6mod integrations;
7mod util;
8mod validate;
9mod validation;
10mod validations;
11
12use proc_macro::TokenStream;
13use quote::ToTokens;
14use syn::{DeriveInput, Error, parse_macro_input};
15
16use crate::validate::Validate;
17
18#[proc_macro_derive(Validate, attributes(validate))]
20pub fn derive(input: TokenStream) -> TokenStream {
21 let input = parse_macro_input!(input as DeriveInput);
22
23 Validate::parse(&input)
24 .map(|validate| validate.to_token_stream())
25 .unwrap_or_else(Error::into_compile_error)
26 .into()
27}