fortifier_macros/
lib.rs

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