drylib_proc_macros/
lib.rs1extern crate proc_macro;
2
3use proc_macro::TokenStream;
4
5#[cfg(feature = "muts")]
6mod muts;
7#[cfg(feature = "clones")]
8mod clones;
9
10mod clones_prefix;
11
12#[proc_macro]
13#[cfg(feature = "clones")]
14pub fn clones(input: TokenStream) -> TokenStream {
15 use crate::clones::*;
16 let ids = clones_parse_muts_(input.into_iter());
17 TokenStream::from_iter(get_clones_(ids, false))
18}
19
20#[proc_macro]
21#[cfg(feature = "mutclones")]
22pub fn mutclones(input: TokenStream) -> TokenStream {
23 use crate::clones::*;
24 let ids = clones_parse_muts_(input.into_iter());
25 TokenStream::from_iter(get_clones_(ids, true))
26}
27
28#[proc_macro]
29#[cfg(feature = "muts")]
30pub fn muts(input: TokenStream) -> TokenStream {
31 use crate::muts::*;
32 let (ids, ids_len, vals, vals_len) = muts_get_ids_vals_(&mut input.into_iter());
33 assert_eq!(ids_len, vals_len, "The number of idents and values must be the same");
34 TokenStream::from_iter(get_muts_(ids, vals))
35}