aboutsummaryrefslogtreecommitdiff
path: root/mingling_macros/src/attr/command.rs
diff options
context:
space:
mode:
author魏曹先生 <1992414357@qq.com>2026-08-10 16:19:45 +0800
committer魏曹先生 <1992414357@qq.com>2026-08-10 16:19:45 +0800
commit2d0aae4b2d595ced100f7a2ec8d13b872a5eb65e (patch)
tree9df306e1185470655f3ed43fad866cf02430160f /mingling_macros/src/attr/command.rs
parent61b770ca958afa7e5eca4c50f5e06bdf3ed7a94a (diff)
refactor: simplify macro parsing code and fix clippy warnings
Diffstat (limited to 'mingling_macros/src/attr/command.rs')
-rw-r--r--mingling_macros/src/attr/command.rs19
1 files changed, 9 insertions, 10 deletions
diff --git a/mingling_macros/src/attr/command.rs b/mingling_macros/src/attr/command.rs
index 9598fa8..bec4dc2 100644
--- a/mingling_macros/src/attr/command.rs
+++ b/mingling_macros/src/attr/command.rs
@@ -51,8 +51,7 @@ impl Parse for CommandArgs {
entry = Some(input.parse()?);
} else {
return Err(input.error(format!(
- "unknown key `{}`; expected `node`, `name`, or `entry`",
- key
+ "unknown key `{key}`; expected `node`, `name`, or `entry`"
)));
}
} else {
@@ -67,7 +66,7 @@ impl Parse for CommandArgs {
}
}
- Ok(CommandArgs {
+ Ok(Self {
node,
name,
entry,
@@ -142,10 +141,10 @@ struct ResolvedNames {
fn resolve_names(fn_name: &Ident, args: &CommandArgs) -> ResolvedNames {
let fn_name_str = fn_name.to_string();
- let node_str = match &args.node {
- Some(lit) => lit.value(),
- None => default_node_from_fn(fn_name),
- };
+ let node_str = args
+ .node
+ .as_ref()
+ .map_or_else(|| default_node_from_fn(fn_name), syn::LitStr::value);
let node_lit = syn::LitStr::new(&node_str, fn_name.span());
let has_overrides = args.node.is_some() || args.name.is_some() || args.entry.is_some();
@@ -160,7 +159,7 @@ fn resolve_names(fn_name: &Ident, args: &CommandArgs) -> ResolvedNames {
Ident::new(&format!("Entry{pascal}"), fn_name.span())
});
- let chain_fn_name = Ident::new(&format!("__command_chain_{}", fn_name_str), fn_name.span());
+ let chain_fn_name = Ident::new(&format!("__command_chain_{fn_name_str}"), fn_name.span());
ResolvedNames {
node_lit,
@@ -213,7 +212,7 @@ fn build_wrapper_params(
let mut params = syn::punctuated::Punctuated::new();
let entry_param: FnArg = syn::parse_quote! { _args: #entry_type };
params.push(entry_param);
- for arg in sig.inputs.iter() {
+ for arg in &sig.inputs {
params.push(arg.clone());
}
params
@@ -317,7 +316,7 @@ pub(crate) fn command_attr(attr: TokenStream, item: TokenStream) -> TokenStream
let wrapper_full = format!("__command_chain_{}", &fn_name_s);
let snaked_wrapper = just_fmt::snake_case!(wrapper_full);
let chain_internal = Ident::new(
- &format!("__internal_chain_{}", snaked_wrapper),
+ &format!("__internal_chain_{snaked_wrapper}"),
fn_name.span(),
);