minnow_derive/
lib.rs

1#![deny(clippy::all, clippy::cargo)]
2#![warn(clippy::pedantic)]
3
4use darling::FromDeriveInput;
5use proc_macro::TokenStream;
6use process::process;
7use syn::parse_macro_input;
8
9mod parse;
10mod process;
11mod write;
12
13#[proc_macro_derive(Encodeable, attributes(encode))]
14pub fn derive(input: TokenStream) -> TokenStream {
15    let derive_input = parse_macro_input!(input as syn::DeriveInput);
16
17    let receiver = match parse::Receiver::from_derive_input(&derive_input) {
18        Ok(opts) => opts,
19        Err(e) => return e.write_errors().into(),
20    };
21
22    let processed = process(receiver);
23
24    write::write(processed).into()
25}