如何在 Rust 中允许并期待编译器警告?

mig*_*iam 5 rust

有时在开发过程中我想允许警告。例如,对于dead_code. 然而,在 CI 和 pre_commit git hooks 中,我有RUSTFLAGS="--deny warnings".

所以我想我想要的是一个属性,例如

#[expect(dead_code)]
fn foo() {
    todo!();
}
Run Code Online (Sandbox Code Playgroud)

它的工作方式与 TypesScript 类似@ts-expect-error,但更具体,需要特定的警告列表。

不确定这对于预期错误是否也有意义。

Cha*_*man 6

这得到了实验的支持。RFC 称为Lint Reasons。该形式正是您所期望的:#[expect(lint)]

#![feature(lint_reasons)]

#[expect(dead_code)]
fn foo() {
    todo!();
}
Run Code Online (Sandbox Code Playgroud)

游乐场

如果未达到预期,则会发出警告。你可以#[deny(unfulfilled_lint_expectations)]让它变成一个错误。

如果您只想允许警告(但在未引发时不发出警告),请使用#[allow(lint)]

#[allow(dead_code)]
fn foo() {
    todo!();
}
Run Code Online (Sandbox Code Playgroud)

游乐场