在编译时发出警告?

时间:2019-07-14 08:53:13

标签: rust

我想在编译时发出警告,也许是从宏发出的。 cap_lints不应将其静音。我当前的用例是功能弃用,但是还有其他可能的用途。

1 个答案:

答案 0 :(得分:3)

目前在稳定的Rust中无法实现。但是,有一个不稳定的功能procedural macro diagnostics,它通过Diagnostic API为过程宏提供了此功能。

要从过程宏内部发出编译器警告,请按以下方式使用它:

#![feature(proc_macro_diagnostic)]

use proc_macro::Diagnostic;

Diagnostic::new()
    .warning("This method is deprecated")
    .emit();

要将警告与特定标记范围关联,请改用spanned_warning。这会使警告输出在消息旁边显示带下划线的相关源标记。