Rust 如何将字符串连接到宏派生中的标识?

Rust 如何将字符串连接到宏派生中的标识?,rust,rust-macros,Rust,Rust Macros,我需要创建一个宏派生,其中名称是函数名的一部分。(此代码不起作用,仅用于显示问题) fn impl_逻辑(ast:&syn::DeriveInput)->令牌流{ 让名称:&syn::Ident=&ast.Ident; 让gen=引用{ pub fn#name_logic()->Arc{ ... } }; 英托将军 } 如何实现这一点?基于quote,您可以使用syn::Ident构造一个新标识符: let fname = format!("{}_logic", name); let varn

我需要创建一个宏派生,其中名称是函数名的一部分。(此代码不起作用,仅用于显示问题)

fn impl_逻辑(ast:&syn::DeriveInput)->令牌流{
让名称:&syn::Ident=&ast.Ident;
让gen=引用{
pub fn#name_logic()->Arc{
...
}
};
英托将军
}

如何实现这一点?

基于
quote
,您可以使用
syn::Ident
构造一个新标识符:

let fname = format!("{}_logic", name);
let varname = syn::Ident::new(&fname, ident.span());
然后插入它:

let gen = quote! {
   pub fn #varname() -> Arc<Mutex<UiAplicacion>> {
       ...
   }
let gen=quote!{
pub fn#varname()->Arc{
...
}
let gen = quote! {
   pub fn #varname() -> Arc<Mutex<UiAplicacion>> {
       ...
   }