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

问题描述 投票:0回答:12
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)]
添加到我的代码中,但这不起作用。

rust compiler-warnings
12个回答
764
投票

您可以:

  • 在结构体、模块、函数等上添加

    allow
    属性:

    #[allow(dead_code)]
    struct SemanticDirection;
    
  • 添加

    allow
    作为 crate 级属性;注意
    !

    #![allow(dead_code)]
    
  • 传给

    rustc
    :

    rustc -A dead_code main.rs
    
  • 使用

    cargo
    通过
    RUSTFLAGS
    环境变量传递它:

    RUSTFLAGS="$RUSTFLAGS -A dead_code" cargo build
    

105
投票

禁用此警告的另一种方法是在标识符前面添加

_
:

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

60
投票

将这两行放在文件顶部。

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

35
投票

使代码公开也会停止警告;您还需要将封闭的

mod
公开。

当您编写库时,这是有道理的:您的代码在内部“未使用”,因为它旨在由客户端代码使用。


8
投票

另外:rust 提供四个级别的 lint(允许、警告、拒绝、禁止)。

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


6
投票
  • 直接将以下内容放入文件的head

    #![allow(dead_code, unused_variables)]

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

    #![allow(unused)]

参考:rust lint 列表


5
投票

您可以将 #[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 启用通常是一个好主意,因为它可以帮助您捕获代码中的错误并确保您不会在项目中引入不必要的代码。但是,当您只是尝试和尝试不同的东西时,它可能会很烦人,因此如果您想在这些情况下禁用它,这是可以理解的。


4
投票

对于未使用的函数,您应该将其公开,但要小心。如果该结构不是公开的,那么您仍然会收到如下错误:

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

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

    }
}

或者如果你不想公开,你应该放

#[allow(unused)]


3
投票

您始终可以通过在变量名称中添加 (_) 来禁用未使用的变量/函数,如下所示:

let _variable = vec![0; 10];

3
投票

*.rs
文件顶部:

#![allow(unused)]  // FIXME

1
投票

将其添加到第一行代码中

#![allow(unused_variables)]

所有警告解决方案:

https://doc.rust-lang.org/rustc/lints/listing/warn-by-default.html


-8
投票

使用功能

#[cfg(feature = "dead_code")]

注意:

"dead_code"
可以替换为任何单词。

© www.soinside.com 2019 - 2024. All rights reserved.