Skip to main content

mavlink_bindgen/
binder.rs

1use quote::{format_ident, quote};
2use std::io::Write;
3
4pub fn generate<W: Write>(modules: Vec<&str>, out: &mut W) {
5    let modules_tokens = modules.into_iter().map(|module| {
6        let module_ident = format_ident!("{}", module);
7        let module_feature = format!("dialect-{module}");
8
9        quote! {
10            #[allow(non_camel_case_types)]
11            #[allow(clippy::derive_partial_eq_without_eq)]
12            #[allow(clippy::field_reassign_with_default)]
13            #[allow(non_snake_case)]
14            #[allow(clippy::unnecessary_cast)]
15            #[allow(clippy::bad_bit_mask)]
16            #[allow(clippy::suspicious_else_formatting)]
17            #[cfg(feature = #module_feature)]
18            pub mod #module_ident;
19        }
20    });
21
22    let tokens = quote! {
23        #(#modules_tokens)*
24    };
25
26    writeln!(out, "{tokens}").unwrap();
27}