Как использовать макросы Rust в одном ящике?
У меня есть источники:
src/
main.rs
memory.rs
chunk.rs
memory.rs
У меня есть макрос:
#[macro_export]
macro_rules! grow_capacity {
( $x:expr ) => {
{
if $x < 8 { 8 } else { $x * 2 }
}
};
}
chunk.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.