liberty_macros/
lib.rs

1mod attribute;
2mod duplicate;
3mod group;
4
5use proc_macro::TokenStream;
6use syn::{DeriveInput, parse_macro_input};
7
8#[proc_macro_derive(Group, attributes(liberty))]
9pub fn macro_group(input: TokenStream) -> TokenStream {
10  let ast = parse_macro_input!(input as DeriveInput);
11  let toks = group::inner(&ast).unwrap_or_else(|err| err.to_compile_error());
12  toks.into()
13}
14
15#[proc_macro_derive(Nothing, attributes(liberty))]
16pub fn macro_nothing(_: TokenStream) -> TokenStream {
17  quote::quote!().into()
18}
19
20#[proc_macro_derive(Duplicate, attributes(duplicated))]
21pub fn macro_duplicate(input: TokenStream) -> TokenStream {
22  let ast = parse_macro_input!(input as DeriveInput);
23  let toks = duplicate::inner(ast).unwrap_or_else(|err| err.to_compile_error());
24  toks.into()
25}