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