bird-protocol-derive 0.1.3

Packet, PacketReadable, PacketWritable derives for bird-protocol crate
Documentation
use syn::{DeriveInput, parse_macro_input};

mod write;
mod util;
mod read;
mod packet;

#[proc_macro_derive(PacketWritable, attributes(variant, var, order, lifetime, enum_type, enum_variant, value))]
pub fn packet_writable(args: proc_macro::TokenStream) -> proc_macro::TokenStream {
    match write::write_impl(&parse_macro_input!(args as DeriveInput)) {
        Ok(ts) => ts,
        Err(err) => err.into_compile_error(),
    }.into()
}

#[proc_macro_derive(PacketReadable, attributes(variant, var, order, lifetime, enum_type, enum_variant, value))]
pub fn packet_readable(args: proc_macro::TokenStream) -> proc_macro::TokenStream {
    match read::read_impl(&parse_macro_input!(args as DeriveInput)) {
        Ok(ts) => ts,
        Err(err) => err.into_compile_error(),
    }.into()
}

#[proc_macro_derive(Packet, attributes(packet))]
pub fn packet(args: proc_macro::TokenStream) -> proc_macro::TokenStream {
    match packet::packet_impl(&parse_macro_input!(args as DeriveInput)) {
        Ok(ts) => ts,
        Err(err) => err.into_compile_error(),
    }.into()
}