如何让编译器警告我标记为pub的未使用的代码?

Tim*_*son 3 compiler-warnings rust

Rust警告未使用的私人物品:

warning: function is never used: `hmm`
   --> src/example.rs:357:1
    |
357 | fn hmm() {
    | ^^^^^^^^
    |
    = note: #[warn(dead_code)] on by default
Run Code Online (Sandbox Code Playgroud)

我有一些标记pub为我知道没有被使用的代码.我怎样才能让编译器警告我这个?

这是在一个库和一系列二进制文件的上下文中,所有这些都在同一个工作区中.该库仅供这些二进制文件使用; 该库未被其他任何人使用,我不打算上传到crates.io,因此我完全了解正在使用的代码.

She*_*ter 7

您无法启用任何操作.根据定义,如果某些东西在您的箱子外面是公开的,它可能被进口您的箱子的箱子使用; 编译器无法实际告诉.这是拥有公共API的一部分.从公共API中删除内容是一个重大变化.

如果您有一个未从您的箱子中导出的物品,那么它pub无关紧要:

mod foo {
    pub fn bar() {}
}

fn main() {}
Run Code Online (Sandbox Code Playgroud)
warning: function is never used: `bar`
 --> src/main.rs:2:5
  |
2 |     pub fn bar() {}
  |     ^^^^^^^^^^^^
  |
  = note: #[warn(dead_code)] on by default
Run Code Online (Sandbox Code Playgroud)

相反,不要将事物标记为公开.相反,要么pub完全放弃,要么使用可见性修饰符pub(crate).二进制板条箱基本上没有标记为从箱子出口的物品.


在您工作空间的特定情况下,从来没有一个编译器知道"一切"的时间.例如,如果你的库导出fn a()fn b()一个二进制文件使用a而另一个二进制文件使用b,那么没有编译库或任何二进制文件都会看到整个图片."最好的"案例将是大量的误报.

在类似的情况下,我已经从API中删除所有公共内容并编译以查看错误/使用过的函数.