小编Sii*_*iir的帖子

如何从同一个板条箱中的不同模块导入/使用宏?

现实生活场景:

我想使用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

我读:
我想看看:
  • 我的示例的可编译版本。
  • 解释为什么它无法编译。
  • 可选: …

import macros visibility export rust

6
推荐指数
1
解决办法
1442
查看次数

标签 统计

export ×1

import ×1

macros ×1

rust ×1

visibility ×1