有时,我发现严格的输入警告更分散注意力而不是有用,同时仍然将一些想法放入代码中,并且在对其进行理智审查之前。
我正在寻找一种快速的编程方法来防止“未使用的声明”警告,以提高我的工作流程。
我将尝试通过一个例子来说明我的意思。
// use rand::Rng;
fn breaking_out_of_nested_loops_using_labels() {
let mut innermost_loop_reached: bool = false;
'outermost_loop: loop {
loop {
// if rand::thread_rng().gen::<u8>() >= u8::MAX / 2 {
// break;
// }
loop {
innermost_loop_reached = true;
break 'outermost_loop;
}
}
}
println!(
"Inner loop was {}reached",
if innermost_loop_reached { "" } else { "not " }
)
}
Run Code Online (Sandbox Code Playgroud)
代码结果出现以下警告:
显然编译器是正确的。
我很好奇是否有一种快速方法可以在键入一些初始代码时“欺骗”或忽略未使用的赋值警告,而您只想知道代码是否仍然可以编译。
经验丰富的 Rust 程序员如何解决这个问题?或者您是否只是学会忽略这些警告,直到您准备好处理它们?
注释掉的代码是我用来防止弹出警告的代码,同时仍在尝试代码。显然,导入一个板条箱并使用随机条件需要大量工作,因此并不理想。
那时我不妨将#[allow(unused_assignments)]-allow-rule 放在我的函数之上。但这就是我试图避免不得不做的事情,因为;
您可以通过rustc标志控制 lint 级别- 例如-A unused_assignments可以消除未使用的分配警告。
您可以配置 Cargo,以便在rustc 使用 config.toml文件调用时应用特定标志,您可以将其放置在项目中、您的 in~/.cargo/config.toml或许多其他位置 - 请参阅 Cargo 文档。
您可以将所需的 Rust 标志放置在该[build]部分中,如下所示:
[build]
rustflags = ["-A", "unused_assignments"]
Run Code Online (Sandbox Code Playgroud)
当然,当您完成初始实验编码阶段时,您仍然需要记住删除它,但至少它不会散布在您的代码中。
不幸的是,尚不可能为每个配置文件设置 rustflags - 能够减少警告debug但保留所有警告可能会很棒release。有一个为此开放的功能请求,因此也许将来会成为可能。
您还可以使用环境变量控制 rust 参数RUSTFLAGS。不过,我通常发现这对于 IDE 这样的环境不太有用,这可能会导致很难控制运行 Cargo 的环境变量。