我试图将整个箱子传递给程序宏。
我已尝试将此代码置于我的lib.rs
:
#![my_macro]
#![feature(proc_macro)]
extern crate my_macro;
use my_macro::{my_macro};
并失败:error: cannot find attribute macro 'my_macro' in this scope
我还尝试将宏调用放在use
子句下面:
#![feature(proc_macro)]
extern crate my_macro;
use mock_macro::{my_macro};
#![my_macro]
但也失败了:error: an inner attribute is not permitted in this context
有可能吗? (我知道syn
有解析整个箱子的功能)
答案 0 :(得分:2)
只要启用feature(extern_absolute_paths)
并使用属性宏的绝对路径,就可以从Rust 1.25.0开始每晚使用。
#![::my_crate::my_macro]
#![feature(extern_absolute_paths, proc_macro)]
rust-lang/rust#41430正在跟踪在包根处调用的属性宏问题。随着RFC 2126的实现进一步发展,我们希望消除必须使用绝对路径指定属性的限制。您也可能遇到其他限制,特别是尝试将函数从当前的crate级过程宏注入包中{。{3}}。