data_classes_derive/
lib.rs1use 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}