msgpack_schema_impl/
lib.rs

1mod attr;
2mod deserialize;
3mod serialize;
4
5use proc_macro::TokenStream;
6use syn::{parse_macro_input, DeriveInput};
7
8/// The `schema` attribute is experimental.
9#[proc_macro_derive(Serialize, attributes(schema, tag, optional, untagged, flatten))]
10pub fn derive_serialize(input: TokenStream) -> TokenStream {
11    let input = parse_macro_input!(input as DeriveInput);
12    serialize::derive(&input)
13        .unwrap_or_else(|err| err.to_compile_error())
14        .into()
15}
16
17/// The `schema` attribute is experimental.
18#[proc_macro_derive(Deserialize, attributes(schema, tag, optional, untagged, flatten))]
19pub fn derive_deserialize(input: TokenStream) -> TokenStream {
20    let input = parse_macro_input!(input as DeriveInput);
21    deserialize::derive(&input)
22        .unwrap_or_else(|err| err.to_compile_error())
23        .into()
24}