Rust 如何将宏属性应用于单独模块中定义的函数?

Rust 如何将宏属性应用于单独模块中定义的函数?,rust,rust-macros,wasm-bindgen,Rust,Rust Macros,Wasm Bindgen,我感兴趣的是通过rust网页包模板使用wasm bindgen将rust代码编译到WebAssembly。但是,我希望避免直接使用#[wasm#u bindgen]属性宏来包装代码,这样我就可以从生成的WebAssembly界面中分离出函数逻辑,从而更好地组织我的项目。相反,我更喜欢将绑定生成放在单独的文件中,例如: mod my_code; use my_code::my_function; #[wasm_bindgen] my_function; // I want to do somet

我感兴趣的是通过
rust网页包模板
使用
wasm bindgen
将rust代码编译到WebAssembly。但是,我希望避免直接使用
#[wasm#u bindgen]
属性宏来包装代码,这样我就可以从生成的WebAssembly界面中分离出函数逻辑,从而更好地组织我的项目。相反,我更喜欢将绑定生成放在单独的文件中,例如:

mod my_code;
use my_code::my_function;

#[wasm_bindgen]
my_function; // I want to do something like this!

我知道
#[wasm_bindgen]
是一个宏属性,它在通常遵循的函数定义的AST上运行,但是有没有一种方法可以将该宏应用于其他地方定义的代码?

据我所知,没有办法做到这一点。宏在它们附加到的代码的AST上运行,这里没有可附加的代码

如果确实需要此功能,则必须复制并粘贴函数的签名:

mod my_code {
    pub fn my_function(_: i32) -> String {
        unimplemented!()
    }
}

#[wasm_bindgen]
fn my_function(a: i32) -> String {
    my_code::my_function(a)
}
您可以编写一个宏,使包装稍微不那么繁琐,但仍然需要复制函数名、参数类型和返回类型