我想使用crate::app::verbose_trace!("string literal")内部crate::app::args::parse模块。
经过一个小时的尝试,我得到了以下简单的例子。它暴露了我对宏的误解。
#[macro_use]
mod foo{
pub fn bar(){
println!("bar works")
}
#[macro_export]
macro_rules! baz{
()=> {println!("baz works")}
}
}
fn main(){
foo::bar();
foo::baz!();
// Following doesn't work either:
// use foo::baz;
// baz!();
}
Run Code Online (Sandbox Code Playgroud)
编译器抱怨
error[E0433]: failed to resolve: could not find `baz` in `foo`
--> src\main.rs:14:14
|
14 | foo::baz!();
| ^^^ could not find `baz` in `foo`
Run Code Online (Sandbox Code Playgroud)
就好像它完全盲目一样:0