在编译时发出警告?
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
。这使得警告输出显示与消息一起加下划线的相关源标记。
我想在编译时发出警告,可能来自宏。它不应该被 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
。这使得警告输出显示与消息一起加下划线的相关源标记。