如何在 Rust 中禁用未使用的代码警告?

struct SemanticDirection;


fn main() {}
warning: struct is never used: `SemanticDirection`
--> src/main.rs:1:1
|
1 | struct SemanticDirection;
| ^^^^^^^^^^^^^^^^^^^^^^^^^
|
= note: #[warn(dead_code)] on by default

对于任何严重的情况,我都会重新打开这些警告,但我只是在修补语言,这让我很抓狂。

我尝试将 #[allow(dead_code)]添加到我的代码中,但是这不起作用。

183254 次浏览

你可以:

  • 在结构、模块、函数等上添加allow属性:

    #[allow(dead_code)]
    struct SemanticDirection;
    
  • Add a crate-level allow attribute; notice the !:

    #![allow(dead_code)]
    
  • Pass it to rustc:

    rustc -A dead_code main.rs
    
  • Pass it using cargo via the RUSTFLAGS environment variable:

    RUSTFLAGS="$RUSTFLAGS -A dead_code" cargo build
    

另一种禁用此警告的方法是在标识符前加上_:

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);

使代码公共也会停止警告;你也需要将封装的mod属性设为public。

当你在编写一个库时,这是有意义的:你的代码在内部是“未使用的”,因为它是供客户端代码使用的。

另外,rust还提供了四个级别的检测(允许、警告、拒绝和禁止)。

https://doc.rust-lang.org/rustc/lints/levels.html#lint-levels

你可以通过在变量名后面加一个(_)来禁用未使用的变量/函数,如下所示:

let _variable = vec![0; 10];

对于未使用的函数,应该将函数设为public,但要注意。如果结构体不是公共的,那么你仍然会得到如下所示的错误:

//this should be public also
struct A{
A{}
}


impl A {
pub fn new() -> A {


}
}

或者如果你不希望它是公共的,你应该放#[allow(unused)]

把这两行放在文件的顶部。

#![allow(dead_code)]
#![allow(unused_variables)]

使用特性

#[cfg(feature = "dead_code")]

注意:"dead_code"可以被任何单词替换。

  • 直接将以下内容放入文件的

    #![allow(dead_code, unused_variables)]

    • dead_code检测未使用的,未导出的项。
    • unused_variables检测没有以任何方式使用的变量。
  • 更简单的方法是将以下内容放在文件的

    #![allow(unused)]

裁判:防锈棉清单