apis_saltans_macros/lib.rs
1//! Macros for deriving parsing functionality for frame-like data structures.
2
3use proc_macro::TokenStream;
4
5use self::parse_zcl_cluster::parse_zcl_cluster;
6use self::parse_zcl_frame::parse_zcl_frame;
7
8mod parse_zcl_cluster;
9mod parse_zcl_frame;
10
11/// Implement a crate-internal frame parser for an enum representing ZCL frame.
12///
13/// # Panics
14///
15/// This macro will panic if the input type is not an enum with single-field variants.
16#[proc_macro_derive(ParseZclCluster)]
17pub fn derive_parse_zcl_cluster(input: TokenStream) -> TokenStream {
18 parse_zcl_cluster(input)
19}
20
21/// Implement a crate-internal frame parser for an enum representing a ZCL cluster's commands.
22///
23/// # Panics
24///
25/// This macro will panic if the input type is not an enum with single-field variants.
26#[proc_macro_derive(ParseZclFrame)]
27pub fn derive_parse_zcl_frame(input: TokenStream) -> TokenStream {
28 parse_zcl_frame(input)
29}