sbor-derive-common 1.3.1

A library for implementing SBOR derives, from the Radix DLT project.
Documentation
use proc_macro2::TokenStream;
use quote::quote;
use syn::*;

macro_rules! trace {
    ($($arg:expr),*) => {{
        #[cfg(feature = "trace")]
        println!($($arg),*);
    }};
}

pub fn handle_sbor(
    input: TokenStream,
    context_custom_value_kind: Option<&'static str>,
    context_custom_type_kind: Option<&'static str>,
) -> Result<TokenStream> {
    trace!("handle_sbor() starts");

    let categorize =
        crate::categorize::handle_categorize(input.clone(), context_custom_value_kind)?;
    let encode = crate::encode::handle_encode(input.clone(), context_custom_value_kind)?;
    let decode = crate::decode::handle_decode(input.clone(), context_custom_value_kind)?;
    let describe = crate::describe::handle_describe(input, context_custom_type_kind)?;

    let output = quote! {
        #categorize

        #encode

        #decode

        #describe
    };

    trace!("handle_sbor() finishes");
    Ok(output)
}