Skip to main content

cainome_cairo_serde_derive/
lib.rs

1use 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}