在编译时发出警告?

Issuing a warning at compile time?

我想在编译时发出警告,可能来自宏。它不应该被 cap_lints 静音。我当前的用例是功能弃用,但还有其他可能的用途。

这目前在稳定的 Rust 中是不可能的。但是,有一个不稳定的特性,procedural macro diagnostics, which provides this functionality for procedural macros, via the Diagnostic API.

要从过程宏内部发出编译器警告,您可以这样使用它:

#![feature(proc_macro_diagnostic)]

use proc_macro::Diagnostic;

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

要将警告与特定标记范围相关联,您需要使用 spanned_warning。这使得警告输出显示与消息一起加下划线的相关源标记。