标签: rust-attributes

错误:当使用自定义 proc_macro 以及用 Rust 中的 darling 编写的属性时,“无法在此范围内找到属性”

我正在编写一个库,其中包含具有自定义属性的自定义派生宏。为此,我使用darling. 因此,我的项目结构如下:

\n
\xe2\x94\x9c\xe2\x94\x80\xe2\x94\x80 pg-worm\n\xe2\x94\x82   \xe2\x94\x9c\xe2\x94\x80\xe2\x94\x80 pg-worm-derive\n\xe2\x94\x82   \xe2\x94\x82   \xe2\x94\x9c\xe2\x94\x80\xe2\x94\x80 src/lib.rs\n\xe2\x94\x82   \xe2\x94\x9c\xe2\x94\x80\xe2\x94\x80 src/lib.rs\n
Run Code Online (Sandbox Code Playgroud)\n

我的 proc 宏是这样指定的 ( pg-worm/pg-worm-derive/src/lib.rs):

\n
use darling::FromDeriveInput;\nuse proc_macro::{self, TokenStream};\nuse syn::parse_macro_input;\n\n#[derive(FromDeriveInput)]\n#[darling(attributes(table))]\nModelInput {\n    table_name: Option<String>\n}\n\n#[proc_macro_derive(Model)]\npub fn derive(input: TokenStream) -> TokenStream {\n    let opts = ModelInput::from_derive_input(&parse_macro_input!(input)).unwrap();\n\n    // macro magic happens\n}\n
Run Code Online (Sandbox Code Playgroud)\n

然后我从主文件 ( pg-worm/src/lib.rs) 中重新导出宏:

\n
pub use pg_worm_derive::*;\n\npub trait Model {\n    // trait specs\n}\n
Run Code Online (Sandbox Code Playgroud)\n

但是当我使用以下代码测试我的宏时(也在pg-worm/src/lib.rs):

\n
#[cfg(test)]\nmod tests {\n    use pg_worm::Model;\n\n    #[derive(Model)]\n    #[table(table_name = "person")]\n    struct Person {\n        id: i64,\n        name: …
Run Code Online (Sandbox Code Playgroud)

rust rust-proc-macros rust-attributes

4
推荐指数
1
解决办法
1220
查看次数

标签 统计

rust ×1

rust-attributes ×1

rust-proc-macros ×1