rust多个属性宏叠加_Rust 1.7.0 macro宏的复用 #[macro_use]的用法

本文详细介绍了Rust 1.7.0中宏的三种使用情况:宏定义在当前文件、同一crate的不同模块以及外部crate。重点讨论了#[macro_use]的作用,它允许将宏应用于当前作用域或crate。通过示例展示了如何在不同情况下正确使用#[macro_use],以及如何在外部crate中导出和使用宏。
摘要由CSDN通过智能技术生成

Rust 1.7.0 中的宏使用范围包括三种情况:

第一种情况是宏定义在当前文件中,这个文件可能是 crate 默认的 module,也可能是任意的 module 模块。

第二种情况是宏定义在当前 crate ,但是不是在当前文件中,而是其他 module 模块中。

第三种情况是宏定义在其他的 crate 中,或者其他的 crate 子模块中。

使用#[macro_use] 可以使被注解的module模块中的宏应用到当前作用域中;或者注释crate中的宏应用到当前crate作用域中。

第一种情况的例子:

macro_rules! say_hello{

()=>(

println!("Hello");

)

}

fn main(){

say_hello!();

}

第二种情况:

先创建一个新文件 macros.rs ,定义一个宏 say_bonjour

macro_rules! say_bonjour{

()=>(

println!("Bonjour");

)

}

使用

#[macro_use]

pub mod macros;

macro_rules! say_hello{

()=>(

println!("Hello");

)

}

fn main(){

say_hello!();<

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值