Crate encoding_derive_helpers[][src]

Expand description

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()
}

Functions

Performs actual derivation of the decode trait using the provided information about trait parameters and requirements for TLV support.

Performs actual derivation of the encode trait using the provided information about trait parameters and requirements for TLV support.