postcard_derive/
lib.rs

1use syn::{parse_macro_input, DeriveInput};
2
3mod max_size;
4mod schema;
5
6/// Derive the `postcard::MaxSize` trait for a struct or enum.
7#[proc_macro_derive(MaxSize)]
8pub fn derive_max_size(item: proc_macro::TokenStream) -> proc_macro::TokenStream {
9    max_size::do_derive_max_size(item)
10}
11
12/// Derive the `postcard_schema::Schema` trait for a struct or enum.
13#[proc_macro_derive(Schema, attributes(postcard, serde))]
14pub fn derive_schema(item: proc_macro::TokenStream) -> proc_macro::TokenStream {
15    let input = parse_macro_input!(item as DeriveInput);
16    schema::do_derive_schema(input)
17        .unwrap_or_else(syn::Error::into_compile_error)
18        .into()
19}