Macros 如何在Rust中导入宏?

Macros 如何在Rust中导入宏?,macros,rust,glium,Macros,Rust,Glium,我正在努力解决如何从外部板条箱导入宏。在我的main.rs中,我正在导入Glium板条箱: #![macro_use] extern crate glium; pub use glium::*; // where my actual main function will be done from mod part01drawtriangle; fn main() { part01drawtriangle::main(); } 在我的另一个文件中,我的主要函数来自该文件箱,我调用其

我正在努力解决如何从外部板条箱导入宏。在我的main.rs中,我正在导入Glium板条箱:

#![macro_use]
extern crate glium;

pub use glium::*;

// where my actual main function will be done from
mod part01drawtriangle;

fn main() {
    part01drawtriangle::main();
}
在我的另一个文件中,我的主要函数来自该文件箱,我调用其中一个宏:

pub fn main() {
    implement_vertex!(Vertex, position);
}
生成时,我收到错误消息:

错误:宏未定义:“实现顶点!”
#[宏使用]
,而不是
#![宏\u使用]

#[…]
将属性应用于其后的对象(在本例中,是
外部板条箱
)<代码>#![…]将属性应用于包含的对象(在本例中为根模块)。

根据:

在Rust 2018中,您可以通过
use
语句,而不是旧的
#[macro\u use]
属性,从外部机箱导入特定的宏

这仅适用于外部机箱中定义的宏。对于本地定义的宏,
#[macro_use]mod foo仍然是必需的,就像2015年一样


但是后来我发现像这样的错误
无法解决。使用未声明的类型或模块
glium::glutin::WindowBuilder`与名称空间相关吗?我还添加了
使用glium::*但仍然不能像脆弱的宏那样工作。尝试添加
使用glium
part01drawtriangle.rs
的顶部。您可能希望打开板条箱的问题;解决方案是在宏定义中使用
$crate::
而不是
glium::
。我也遇到了同样的问题,glium也遇到了同样的问题,但尝试应用下面的解决方案不起作用。我一直得到宏未定义错误。我的目录结构是[main.rs,lib.rs,tutorial:[mod.rs,draw_triangle.rs]],其中实现了_顶点!正在draw_triangle.rs中使用
// in a `bar` crate's lib.rs:
#[macro_export]
macro_rules! baz {
    () => ()
}

// in your crate:
use bar::baz;

// Rather than:
//
// #[macro_use]
// extern crate bar;