Macros 在宏规则中使用另一个宏,而不需要在rust中使用“extern crate”
是否有一种“重新导出”Macros 在宏规则中使用另一个宏,而不需要在rust中使用“extern crate”,macros,rust,Macros,Rust,是否有一种“重新导出”#[macro_use]外部板条箱的方法类似于发布使用,以便使用宏的宏的用户不必手动添加这些相关的外部板条箱 问题的其余部分是一个例子来说明 在src/lib.rs中,请注意id宏使用的是lazy\u static宏: #[macro_export] macro_rules! id { () => { lazy_static! { static ref NUMBER : std::sync::atomic::Atomic
#[macro_use]外部板条箱
的方法类似于发布使用
,以便使用宏的宏的用户不必手动添加这些相关的外部板条箱
问题的其余部分是一个例子来说明
在src/lib.rs
中,请注意id
宏使用的是lazy\u static
宏:
#[macro_export]
macro_rules! id {
() => {
lazy_static! {
static ref NUMBER : std::sync::atomic::AtomicUsize =
std::sync::atomic::AtomicUsize::new(0);
}
return NUMBER.fetch_add(1, std::sync::atomic::Ordering::SeqCst);
}
}
在examples/example.rs
中,每个宏都需要一个extern板条箱
行,即使我们只是直接使用id
宏:
#[macro_use]
extern crate id_macro;
#[macro_use]
extern crate lazy_static;
fn new_id() -> usize {
id!();
}
fn main() {
println!("id {}", new_id()); // prints "id 0"
println!("id {}", new_id()); // prints "id 1"
}
在本例中,如果id\u宏
的用户可以使用id代码>而不知道惰性\u static
。是否有一种“再出口”extern-crater
的方法类似于pub-use
,以使下面的行远离示例
#[macro_use]
extern crate lazy_static;
有一个不稳定的属性
但是,Rust正在努力使宏()的行为类似于支持发布使用的普通项目,因此此属性将不稳定,并将过时。谢谢@Kornel。如果有人遇到这个问题,对于lazy\u static
,我特别需要的是:#![功能(宏重新导出)]#[宏重新导出(惰性静态、惰性静态、惰性静态内部、惰性静态创建)]外部板条箱惰性静态代码>真是太多了!当然,现在只在晚上编译。