此代码:

#[allow(dead_code)]
macro_rules! test {
    ($x:expr) => {{}}
}

fn main() {

    println!("Results:")

}

生成有关未使用宏定义的以下警告:

warning: unused macro definition
  --> /home/xxx/.emacs.d/rust-playground/at-2017-08-02-031315/snippet.rs:10:1
   |
10 | / macro_rules! test {
11 | |     ($x:expr) => {{}}
12 | | }
   | |_^
   |
   = note: #[warn(unused_macros)] on by default

有可能压制它吗?正如你所看到的,在宏的情况下,#[allow(dead_code)没有帮助.

推荐答案

编译器警告声明:

= note: #[warn(unused_macros)] on by default

这与未使用功能引起的警告非常相似:

= note: #[warn(dead_code)] on by default

可以用同样的方法禁用这些警告,但需要使用匹配的宏属性:

#[allow(unused_macros)]
macro_rules! test {
    ($x:expr) => {{}}
}

Rust相关问答推荐

为什么在Rust struct 中只允许最后一个字段具有动态大小的类型

如何在rust中有条件地分配变量?

在Rust中,在实现特征`Display`时,如何获取调用方指定的格式?

在Rust中,如果Result是Err,运行副作用(如日志(log)记录)的惯用方法是什么

无法将记录器向下转换回原始 struct

如何计算迭代器适配器链中过滤的元素的数量

随机函数不返回随机值

一次不能多次borrow *obj作为可变对象

当没有实际结果时,如何在 Rust 中强制执行错误处理?

max(ctz(x), ctz(y)) 有更快的算法吗?

错误:将自定义 proc_macro 与用Rust 的宝贝编写的属性一起使用时,无法在此范围内找到属性

没有分号的返回表达式的性能是否比使用返回更好?在Rust ?

为什么 no_std crate 可以依赖于使用 std 的 crate?

从函数返回 u32 的数组/切片

制作嵌套迭代器的迭代器

有没有办法隐藏类型定义?

需要括号的宏调用中的不必要的括号警告 - 这是编写宏的糟糕方法吗?

在同一向量 Rust 中用另一个字符串扩展一个字符串

如何在宏中的多个参数上编写嵌套循环?

为什么 Bevy 的 Trait 边界不满足 Rapier 物理插件?