diff --git a/src/macros/rustc.rs b/src/macros/rustc.rs index b870ae3b..36082ddd 100644 --- a/src/macros/rustc.rs +++ b/src/macros/rustc.rs @@ -1,11 +1,11 @@ use proc_macro::TokenStream; use quote::quote; +use crate::utils::get_crate_name; + pub(super) fn flags_capture(args: TokenStream) -> TokenStream { - let cargo_crate_name = std::env::var("CARGO_CRATE_NAME"); - let crate_name = match cargo_crate_name.as_ref() { - | Err(_) => return args, - | Ok(crate_name) => crate_name.trim_start_matches("tuwunel_"), + let Some(crate_name) = get_crate_name() else { + return args; }; let flag = std::env::args().collect::>(); diff --git a/src/macros/utils.rs b/src/macros/utils.rs index 8e40863a..44f934aa 100644 --- a/src/macros/utils.rs +++ b/src/macros/utils.rs @@ -4,6 +4,18 @@ use syn::{Expr, ExprLit, Generics, Lit, Meta, MetaNameValue, parse_str}; use crate::Result; +pub(crate) fn get_crate_name() -> Option { + let cargo_crate_name = std::env::var("CARGO_CRATE_NAME"); + match cargo_crate_name.as_ref() { + | Err(_) => None, + | Ok(crate_name) => Some( + crate_name + .trim_start_matches("tuwunel_") + .to_owned(), + ), + } +} + pub(crate) fn get_simple_settings(args: &[Meta]) -> HashMap { args.iter().fold(HashMap::new(), |mut map, arg| { let Meta::NameValue(MetaNameValue { path, value, .. }) = arg else {