encoding_derive_helpers 1.7.6

Helper functions for creating different encoding derivation macros
Documentation

Helper functions for creating encoding derive crates, like strict_encoding_derive or lightning_encoding_derive.

To create a derive crate, just use the following sample:

extern crate proc_macro;
#[macro_use]
extern crate amplify;

use encoding_derive_helpers::{decode_derive, encode_derive, TlvEncoding};
use proc_macro::TokenStream;
use syn::DeriveInput;

#[proc_macro_derive(StrictEncode, attributes(strict_encoding))]
pub fn derive_strict_encode(input: TokenStream) -> TokenStream {
let derive_input = parse_macro_input!(input as DeriveInput);
encode_derive(
"strict_encoding",
ident!(strict_encoding),
ident!(StrictEncode),
ident!(strict_encode),
ident!(strict_serialize),
derive_input,
TlvEncoding::Denied,
)
.unwrap_or_else(|e| e.to_compile_error())
.into()
}