Macro synstructure::decl_derive [−][src]
The decl_derive!
macro declares a custom derive wrapper. It will parse the
incoming TokenStream
into a synstructure::Structure
object, and pass it
into the inner function.
Your inner function should take a synstructure::Structure
by value, and
return a type implementing synstructure::MacroResult
, for example:
fn derive_simple(input: synstructure::Structure) -> proc_macro2::TokenStream { unimplemented!() } fn derive_result(input: synstructure::Structure) -> syn::Result<proc_macro2::TokenStream> { unimplemented!() }
Usage
Without Attributes
fn derive_interesting(_input: synstructure::Structure) -> proc_macro2::TokenStream { quote::quote! { ... } } decl_derive!([Interesting] => derive_interesting);
With Attributes
fn derive_interesting(_input: synstructure::Structure) -> proc_macro2::TokenStream { quote::quote! { ... } } decl_derive!([Interesting, attributes(interesting_ignore)] => derive_interesting);
Decl Attributes & Doc Comments
fn derive_interesting(_input: synstructure::Structure) -> proc_macro2::TokenStream { quote::quote! { ... } } decl_derive! { [Interesting] => #[allow(some_lint)] /// Documentation Comments derive_interesting }
This macro is available if synstructure
is built with the "proc-macro"
feature.