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)]
添加到我的代码中,但这不起作用。
您可以:
在结构、模块、函数等上添加允许属性:#[allow(dead_code)] struct SemanticDirection;
添加 crate 级别的 allow 属性;注意 !: #![allow(dead_code)]
将其传递给 rustc: rustc -A dead_code main.rs
通过 RUSTFLAGS 环境变量使用 cargo 传递它: 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);
let _ =
值将在语句的末尾被删除,而不是在块的末尾
let X = Y
中的 X
是一个无可辩驳的模式(即,它就像一个 match
手臂,可以在编译时证明永远不会出错),并且,就像可反驳的模式,_
是一个通配符,它不会将任何内容绑定到变量。这就是为什么以及如何进行 let (x, y) = foo();
和其他类似的拆包。这只是另一种无可辩驳的模式。
将这两行放在文件的顶部。
#![allow(dead_code)]
#![allow(unused_variables)]
#![allow(dead_code, unused)]
;-)
将代码设为 public 也会停止警告;您还需要公开封闭的 mod
。
这在您编写库时是有道理的:您的代码在内部是“未使用的”,因为它旨在供客户端代码使用。
您始终可以通过在变量名称中添加 (_) 来禁用未使用的变量/函数,如下所示:
let _variable = vec![0; 10];
对于未使用的函数,您应该公开该函数,但要小心。如果结构不是公开的,那么您仍然会收到如下错误:
//this should be public also
struct A{
A{}
}
impl A {
pub fn new() -> A {
}
}
或者,如果您不希望它公开,您应该输入 #[allow(unused)]
使用特征
#[cfg(feature = "dead_code")]
注意:"dead_code"
可以替换为任何单词。
不定期副业成功案例分享
-A unused_variables
有助于防止将_
放在所有内容的前面。#![allow(dead_code)]
还必须在任何代码之前进行,否则 rust 会产生一些神秘的错误。