我有一个相当大的程序宏包。现在所有内容都包含在src/lib.rs
文件中。为了使内容更具可读性,我想将组件移到它们自己的文件中。但是,我在定义函数时遇到了麻烦。是否可以将导出的函数移到包的根目录之外#[proc_macro]
,如果可以,如何操作?#[proc_macro]
项目结构如下
- Cargo.lock
- Cargo.toml
- src
- lib.rs
- module_file.rs
库文件
use proc_macro::TokenStream;
mod module_file;
#[proc_macro]
pub use module_file::some_function;
模块文件.rs
use proc_macro::TokenStream;
pub fn some_function(tokens: TokenStream) -> TokenStream { ... }
但是这不能编译。我收到以下错误:
error: the #[proc_macro] attribute may only be used on bare functions