use {
proc_macro::TokenStream,
syn::{DeriveInput, parse_macro_input},
};
mod assert_zero_copy;
mod common;
mod schema_read;
mod schema_write;
mod uninit_builder;
#[proc_macro_derive(SchemaWrite, attributes(wincode))]
pub fn derive_schema_write(input: TokenStream) -> TokenStream {
let input = parse_macro_input!(input as DeriveInput);
match schema_write::generate(input) {
Ok(tokens) => tokens.into(),
Err(e) => e.write_errors().into(),
}
}
#[proc_macro_derive(SchemaRead, attributes(wincode))]
pub fn derive_schema_read(input: TokenStream) -> TokenStream {
let input = parse_macro_input!(input as DeriveInput);
match schema_read::generate(input) {
Ok(tokens) => tokens.into(),
Err(e) => e.write_errors().into(),
}
}
#[proc_macro_derive(UninitBuilder, attributes(wincode))]
pub fn derive_uninit_builder(input: TokenStream) -> TokenStream {
let input = parse_macro_input!(input as DeriveInput);
match uninit_builder::generate(input) {
Ok(tokens) => tokens.into(),
Err(e) => e.write_errors().into(),
}
}