firmware_controller/
lib.rs

1#![doc = include_str!("../README.md")]
2
3use proc_macro::TokenStream;
4use syn::{parse_macro_input, punctuated::Punctuated, ItemMod, Meta, Token};
5
6mod controller;
7mod util;
8
9/// See the crate-level documentation for more information.
10#[proc_macro_attribute]
11pub fn controller(attr: TokenStream, item: TokenStream) -> TokenStream {
12    let _args = parse_macro_input!(attr with Punctuated<Meta, Token![,]>::parse_terminated);
13
14    let input = parse_macro_input!(item as ItemMod);
15    controller::expand_module(input)
16        .unwrap_or_else(|e| e.to_compile_error())
17        .into()
18}