Tenho uma caixa de macros procedurais bem grande. Agora mesmo, tudo está incluído no src/lib.rs
arquivo. Para tornar as coisas mais legíveis, gostaria de mover os componentes para seu próprio arquivo. No entanto, estou tendo problemas ao definir as #[proc_macro]
funções. É possível, e se sim, como, mover #[proc_macro]
funções exportadas para fora da raiz da caixa?
A estrutura do projeto é a seguinte
- Cargo.lock
- Cargo.toml
- src
- lib.rs
- module_file.rs
biblioteca.rs
use proc_macro::TokenStream;
mod module_file;
#[proc_macro]
pub use module_file::some_function;
arquivo_módulo.rs
use proc_macro::TokenStream;
pub fn some_function(tokens: TokenStream) -> TokenStream { ... }
No entanto, isso não compila. Recebo o seguinte erro:
error: the #[proc_macro] attribute may only be used on bare functions