Skip to main content

icydb_derive/
lib.rs

1mod display;
2mod field_projection;
3mod inner;
4mod newtype;
5mod ops;
6mod persisted_row;
7
8use proc_macro::TokenStream;
9
10/// Derive arithmetic operator implementations by delegating to the shared ops generator.
11#[proc_macro_derive(Add)]
12pub fn derive_add(input: TokenStream) -> TokenStream {
13    ops::derive_add(input.into()).into()
14}
15
16/// Derive `AddAssign` by delegating to the shared ops generator.
17#[proc_macro_derive(AddAssign)]
18pub fn derive_add_assign(input: TokenStream) -> TokenStream {
19    ops::derive_add_assign(input.into()).into()
20}
21
22/// Derive subtraction operator implementations by delegating to the shared ops generator.
23#[proc_macro_derive(Sub)]
24pub fn derive_sub(input: TokenStream) -> TokenStream {
25    ops::derive_sub(input.into()).into()
26}
27
28/// Derive `SubAssign` by delegating to the shared ops generator.
29#[proc_macro_derive(SubAssign)]
30pub fn derive_sub_assign(input: TokenStream) -> TokenStream {
31    ops::derive_sub_assign(input.into()).into()
32}
33
34/// Derive multiplication operator implementations by delegating to the shared ops generator.
35#[proc_macro_derive(Mul)]
36pub fn derive_mul(input: TokenStream) -> TokenStream {
37    ops::derive_mul(input.into()).into()
38}
39
40/// Derive `MulAssign` by delegating to the shared ops generator.
41#[proc_macro_derive(MulAssign)]
42pub fn derive_mul_assign(input: TokenStream) -> TokenStream {
43    ops::derive_mul_assign(input.into()).into()
44}
45
46/// Derive division operator implementations by delegating to the shared ops generator.
47#[proc_macro_derive(Div)]
48pub fn derive_div(input: TokenStream) -> TokenStream {
49    ops::derive_div(input.into()).into()
50}
51
52/// Derive `DivAssign` by delegating to the shared ops generator.
53#[proc_macro_derive(DivAssign)]
54pub fn derive_div_assign(input: TokenStream) -> TokenStream {
55    ops::derive_div_assign(input.into()).into()
56}
57
58/// Derive remainder operator implementations by delegating to the shared ops generator.
59#[proc_macro_derive(Rem)]
60pub fn derive_rem(input: TokenStream) -> TokenStream {
61    ops::derive_rem(input.into()).into()
62}
63
64/// Derive `Sum` by delegating to the shared ops generator.
65#[proc_macro_derive(Sum)]
66pub fn derive_sum(input: TokenStream) -> TokenStream {
67    ops::derive_sum(input.into()).into()
68}
69
70/// Derive field-projection support for generated entity access helpers.
71#[proc_macro_derive(FieldProjection)]
72pub fn derive_field_projection(input: TokenStream) -> TokenStream {
73    field_projection::derive_field_projection(input.into()).into()
74}
75
76/// Derive persisted-row slot materialization and projection helpers.
77#[proc_macro_derive(PersistedRow)]
78pub fn derive_persisted_row(input: TokenStream) -> TokenStream {
79    persisted_row::derive_persisted_row(input.into()).into()
80}
81
82/// Derive `Display` by delegating to the shared display generator.
83#[proc_macro_derive(Display)]
84pub fn derive_display(input: TokenStream) -> TokenStream {
85    display::derive_display(input.into()).into()
86}
87
88/// Derive `Inner` accessors for wrapper/newtype shells.
89#[proc_macro_derive(Inner)]
90pub fn derive_inner(input: TokenStream) -> TokenStream {
91    inner::derive_inner(input.into()).into()
92}