fortifier_macros/
lib.rs

1#![warn(missing_docs)]
2
3//! Fortifier macros.
4
5mod 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/// Validate derive macro.
17#[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}