Skip to main content

moxy_derive/
lib.rs

1mod build;
2pub(crate) mod core;
3mod default;
4mod deref;
5mod display;
6mod forward;
7mod get;
8pub(crate) mod params;
9mod set;
10mod traits;
11mod r#union;
12
13use proc_macro::TokenStream;
14
15pub(crate) use traits::*;
16
17#[proc_macro_derive(Deref, attributes(moxy))]
18pub fn derive_deref(tokens: TokenStream) -> TokenStream {
19    match deref::render(tokens) {
20        Err(err) => err.to_compile_error().into(),
21        Ok(v) => v.into(),
22    }
23}
24
25#[proc_macro_derive(Display, attributes(moxy))]
26pub fn derive_display(tokens: TokenStream) -> TokenStream {
27    match display::render(tokens) {
28        Err(err) => err.to_compile_error().into(),
29        Ok(v) => v.into(),
30    }
31}
32
33#[proc_macro_derive(Build, attributes(moxy))]
34pub fn derive_build(tokens: TokenStream) -> TokenStream {
35    match build::render(tokens) {
36        Err(err) => err.to_compile_error().into(),
37        Ok(v) => v.into(),
38    }
39}
40
41#[proc_macro_derive(Default, attributes(moxy))]
42pub fn derive_default(tokens: TokenStream) -> TokenStream {
43    match default::render(tokens) {
44        Err(err) => err.to_compile_error().into(),
45        Ok(v) => v.into(),
46    }
47}
48
49#[proc_macro_derive(Get, attributes(moxy))]
50pub fn derive_get(tokens: TokenStream) -> TokenStream {
51    match get::render(tokens) {
52        Err(err) => err.to_compile_error().into(),
53        Ok(v) => v.into(),
54    }
55}
56
57#[proc_macro_derive(Set, attributes(moxy))]
58pub fn derive_set(tokens: TokenStream) -> TokenStream {
59    match set::render(tokens) {
60        Err(err) => err.to_compile_error().into(),
61        Ok(v) => v.into(),
62    }
63}
64
65#[proc_macro_derive(Forward, attributes(moxy))]
66pub fn derive_forward(tokens: TokenStream) -> TokenStream {
67    match forward::render(tokens) {
68        Err(err) => err.to_compile_error().into(),
69        Ok(v) => v.into(),
70    }
71}
72
73#[proc_macro_derive(Union, attributes(moxy))]
74pub fn derive_union(tokens: TokenStream) -> TokenStream {
75    match r#union::render(tokens) {
76        Err(err) => err.to_compile_error().into(),
77        Ok(v) => v.into(),
78    }
79}
80
81#[proc_macro]
82pub fn unionize(tokens: TokenStream) -> TokenStream {
83    match r#union::unionize::render(tokens) {
84        Err(err) => err.to_compile_error().into(),
85        Ok(v) => v.into(),
86    }
87}