Macros 如何在Rust中导入宏?
我正在努力解决如何从外部板条箱导入宏。在我的main.rs中,我正在导入Glium板条箱: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(); } 在我的另一个文件中,我的主要函数来自该文件箱,我调用其
#![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;