twi*_*itu 3 macros rust rust-crates rust-macros
我正在尝试导出一个使用包中定义的某些函数的宏。像这样的东西,例如在一个名为的板条箱中a_macro_a_day
// lib.rs
pub fn a() {}
#[macro_export]
macro_rules! impl_helper_funcs {
use crate::a; // error unresolved import
use a_macro_a_day::a; // error unresolved import
fn b() {
...
a() // call imported a here
}
}
Run Code Online (Sandbox Code Playgroud)
我尝试过使用各种组合use来导入a,但错误总是显示宏定义为unresolved import crateor unresolved import a_macro_a_day。
我不想采用过程宏方式,因为这只是为了减少代码重复。有没有办法导出导入本地(但公共)函数的宏?
在声明性宏中,您应该使用$crate来访问当前包中的项目。并且您的宏声明缺少匹配项和正文。
尝试这个:
// lib.rs
pub fn a() {}
#[macro_export]
macro_rules! impl_helper_funcs {
// vvvvvvv add this
() => {
use $crate::a;
// ^ add this
fn b() {
// ...
a() // call imported a here
}
};
// ^^ add this
}
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
859 次 |
| 最近记录: |