cainome_cairo_serde_derive/
lib.rs1use proc_macro::{self};
2use syn::{parse_macro_input, Data, DeriveInput};
3
4mod derive_enum;
5mod derive_struct;
6
7#[proc_macro_derive(CairoSerde)]
8pub fn derive(input: proc_macro::TokenStream) -> proc_macro::TokenStream {
9 let DeriveInput { ident, data, .. } = parse_macro_input!(input);
10
11 let output = match data {
12 Data::Struct(data) => derive_struct::derive_struct(ident, data),
13 Data::Enum(data) => derive_enum::derive_enum(ident, data),
14 Data::Union(_) => panic!("Unions are not supported for the cairo_serde_derive!"),
15 };
16
17 output.into()
18}