#![forbid(unsafe_code)]
#![deny(missing_debug_implementations, nonstandard_style)]
#![warn(missing_docs)]
use proc_macro::TokenStream;
use syn::parse_macro_input;
mod inherent;
mod strukt;
mod utils;
#[proc_macro_attribute]
pub fn placing(_attr: TokenStream, item: TokenStream) -> TokenStream {
let item = parse_macro_input!(item as syn::Item);
match item {
syn::Item::Impl(item) => inherent::process_impl(item),
syn::Item::Struct(item) => strukt::process_struct(item),
_ => quote::quote! {
compile_error!("`[placing, E0001] invalid item kind: macro `placing` can only be used on inherent impls and structs");
}.into()
}
}