在修改 Rust 时,我反复遇到很多死代码警告,这让我很难集中注意力。我尝试使用外部属性
#[allow(dead_code)]
,但它一次只能消除一个警告。
struct SemanticDirection;
fn main() {}
warning: struct `SemanticDirection` is never constructed
--> src\main.rs:1:8
|
1 | struct SemanticDirection;
| ^^^^^^^^^^^^^^^^^
|
= note: `#[warn(dead_code)]` on by default
如何在 crate 级别禁用这些警告?
禁用此警告的另一种方法是在标识符前面添加
_
:
struct _UnusedStruct {
_unused_field: i32,
}
fn main() {
let _unused_variable = 10;
}
这可能很有用,例如,对于 SDL 窗口:
let _window = video_subsystem.window("Rust SDL2 demo", 800, 600);
使用下划线作为前缀与使用单独的下划线作为名称不同。执行以下操作将立即破坏窗口,这不太可能是预期的行为。
let _ = video_subsystem.window("Rust SDL2 demo", 800, 600);
将这两行放在文件顶部:
#![allow(dead_code)]
#![allow(unused_variables)]
使代码公开也会停止警告;您还需要将封闭的
mod
公开。
当您编写库时,这是有道理的:您的代码在内部“未使用”,因为它旨在由客户端代码使用。
另外:rust 提供四个级别的 lint(允许、警告、拒绝、禁止)。
https://doc.rust-lang.org/rustc/lints/levels.html#lint-levels
直接将以下内容放入文件的head中
#![allow(dead_code, unused_variables)]
dead_code
lint 检测未使用、未导出的项目。unused_variables
lint 检测未以任何方式使用的变量。更简单的方法是将以下内容放在文件的head中
#![allow(unused)]
参考:rust lint 列表
您可以将 #[allow(dead_code)] 属性添加到结构定义中,如下所示:
#[allow(dead_code)]
struct SemanticDirection;
或者您可以通过在文件顶部添加属性来禁用整个文件的警告,如下所示:
#![allow(dead_code)]
struct SemanticDirection;
但是这些属性只有在启用 dead_code lint 的情况下才有效。默认情况下,dead_code lint 在 Rust 中处于启用状态,但您可以通过将以下内容添加到代码顶部来禁用它:
#![deny(dead_code)]
这将禁用整个文件的 dead_code lint。
保持 dead_code lint 启用通常是一个好主意,因为它可以帮助您捕获代码中的错误并确保您不会在项目中引入不必要的代码。但是,当您只是尝试和尝试不同的东西时,它可能会很烦人,因此如果您想在这些情况下禁用它,这是可以理解的。
对于未使用的函数,您应该将其公开,但要小心。如果该结构不是公开的,那么您仍然会收到如下错误:
//this should be public also
struct A{
A{}
}
impl A {
pub fn new() -> A {
}
}
或者如果你不想公开,你应该放
#[allow(unused)]
您始终可以通过在变量名称中添加 (_) 来禁用未使用的变量/函数,如下所示:
let _variable = vec![0; 10];
在
*.rs
文件顶部:
#![allow(unused)] // FIXME
将其添加到第一行代码中
#![allow(unused_variables)]
所有警告解决方案:
https://doc.rust-lang.org/rustc/lints/listing/warn-by-default.html
其他人已经回答了如何使用
#[allow(dead_code)]
在代码中执行此操作,但如果您是像我这样的 Windows 用户,想要在命令行中执行此操作,则确切的格式略有不同。在运行任何 cargo
命令来设置环境变量之前,输入以下行:
禁用 Rust 检查死代码:
set RUSTFLAGS=-A dead_code
禁用 Rust 检查未使用的变量:
set RUSTFLAGS=-A unused_variables
禁用 Rust 检查死代码和未使用的变量:
set RUSTFLAGS= -A dead_code -A unused_variables
要恢复 Rust 到之前的行为:
set RUSTFLAGS=
此后,Cargo 将按照您指定的方式运行,直到您关闭命令行。
如果您希望使用
'&' 分隔符在
单行上运行
set RUSTFLAGS
和 cargo
命令,以下是添加了 cargo build
的上述所有示例:
set RUSTFLAGS=-A dead_code & cargo build
set RUSTFLAGS=-A unused_variables & cargo build
set RUSTFLAGS=-A dead_code -A unused_variables & cargo build
set RUSTFLAGS=& cargo build
使用功能
#[cfg(feature = "dead_code")]
注意:
"dead_code"
可以替换为任何单词。