utility_macros_derive/
lib.rs1use _um::{
2 derive::{
3 partial::partial_impl, readonly::readonly_impl, record::record_impl,
4 required::required_impl,
5 },
6 union::union_impl::union_impl,
7};
8use proc_macro::TokenStream;
9use syn::{parse_macro_input, DeriveInput};
10
11#[proc_macro_derive(Partial, attributes(partial))]
13pub fn derive_partial(input: TokenStream) -> TokenStream {
14 let input = parse_macro_input!(input as DeriveInput);
15 partial_impl(input).into()
16}
17
18#[proc_macro_derive(Required, attributes(required))]
20pub fn derive_required(input: TokenStream) -> TokenStream {
21 let input = parse_macro_input!(input as DeriveInput);
22 required_impl(input).into()
23}
24
25#[proc_macro_derive(Readonly, attributes(readonly))]
27pub fn derive_readonly(input: TokenStream) -> TokenStream {
28 let input = parse_macro_input!(input as DeriveInput);
29 readonly_impl(input).into()
30}
31
32#[proc_macro_derive(Record, attributes(record))]
34pub fn derive_record(input: TokenStream) -> TokenStream {
35 let input = parse_macro_input!(input as DeriveInput);
36 record_impl(input).into()
37}
38
39#[proc_macro]
41pub fn union(item: TokenStream) -> TokenStream {
42 union_impl(item.into()).into()
43}