0

我有以下来源:

src/
  main.rs
  memory.rs
  chunk.rs

内存.rs

我有一个宏:

#[macro_export]
macro_rules! grow_capacity {
    ( $x:expr ) => {
        {
            if $x < 8 { 8 } else { $x * 2 }
        }
    };
}

块.rs

我想使用它:

use crate::memory;

// define struct Chunk

impl Chunk {
    pub fn write(&mut self, byte: u8) {
        // other lines of code.
        self.capacity = memory::grow_capacity!(self.capacity);
    }

它给了我错误:

error[E0433]: failed to resolve: could not find `grow_capacity` in `memory`
  --> src/chunk.rs:27:28
   |
27 |             self.capacity = memory::grow_capacity!(self.capacity);
   |                                     ^^^^^^^^^^^^^ could not find `grow_capacity` in `memory`

为了使帖子简短,我在Gist上有完整的代码。

如果我把宏放在里面chunk.rs,那么我可以使用它。我不认为如何跨模块文件使用宏?作品。Rust 改变了它的特性吗?我在 Rust 1.44.1 上。

4

0 回答 0