use proc_macro::TokenStream;
use quote::format_ident;
use syn::{DeriveInput, parse_macro_input};
mod native_schema;
#[proc_macro_derive(Wire, attributes(serde, wire))]
pub fn derive_wire(input: TokenStream) -> TokenStream {
native_schema::expand(parse_macro_input!(input as DeriveInput))
.unwrap_or_else(syn::Error::into_compile_error)
.into()
}
fn fresh_ident(source: &str, base: &str) -> syn::Ident {
let mut name = base.to_owned();
while source.contains(&name) {
name.push('_');
}
format_ident!("{name}")
}