data_classes_derive/
lib.rs

1use proc_macro::TokenStream;
2
3mod r#impl {
4    pub mod data;
5    pub mod default;
6    pub mod derive;
7    pub mod init_struct;
8    pub mod keyval;
9}
10
11mod util {
12    pub mod fields_attr;
13    pub mod parse_attr_tree;
14}
15
16#[proc_macro]
17pub fn init_struct(item: TokenStream) -> TokenStream {
18    r#impl::init_struct::main(item)
19}
20
21#[proc_macro_attribute]
22pub fn data(attr: TokenStream, item: TokenStream) -> TokenStream {
23    r#impl::data::main(attr, item)
24}
25
26#[proc_macro_attribute]
27pub fn key(attr: TokenStream, item: TokenStream) -> TokenStream {
28    r#impl::keyval::key(attr, item)
29}
30
31#[proc_macro_attribute]
32pub fn val(attr: TokenStream, item: TokenStream) -> TokenStream {
33    r#impl::keyval::val(attr, item)
34}
35
36#[proc_macro_attribute]
37pub fn default(attr: TokenStream, item: TokenStream) -> TokenStream {
38    r#impl::default::main(attr, item)
39}
40
41#[proc_macro_derive(ToPrev)]
42pub fn derive_to_prev(item: TokenStream) -> TokenStream {
43    r#impl::derive::to_prev(item)
44}
45
46#[proc_macro_derive(ToNext)]
47pub fn derive_to_next(item: TokenStream) -> TokenStream {
48    r#impl::derive::to_next(item)
49}
50
51#[cfg(feature = "rand")]
52#[proc_macro_derive(ToRandom)]
53pub fn derive_to_random(item: TokenStream) -> TokenStream {
54    r#impl::derive::to_random(item)
55}