如何消除 Rust 中单个语句的警告?
How to quiet a warning for a single statement in Rust?
假设有一个警告,例如path_statements
、unused_variables
。有没有办法忽略其中的一个瞬间,而不将它们隔离到代码块或函数中?
要清楚,当代码中有一个警告时。我希望能够仅使该警告安静下来,而不必针对特定警告进行特殊更改。
并且在其他任何地方都没有这种静音警告,甚至稍后在同一功能中也是如此。
使用 GCC 可以按如下方式完成:
#pragma GCC diagnostic push
#pragma GCC diagnostic ignored "-Wformat"
/* Isolated region which doesn't raise warnings! */
this_would_raise_Wformat(args);
#pragma GCC diagnostic pop
Rust 是否具有同等能力?
注意,我问的是如何消除警告的一般情况。
我知道有一些方法可以解决未使用的 var 警告,例如
如果你想在一个模块中消除所有的警告,写例如#![allow(dead_code)]
(注意感叹号)在模块的顶部。这将在整个模块中禁用所有此类警告。您也可以调用 rustc
例如-A dead_code
.
您可以通过在模块顶部写入 [=13=] 来禁用所有警告。
您可以在忽略特定警告的地方插入 mod
规则(如 Rust book 中所述)。
正如卢卡斯所说,你也可以写成#[allow(dead_code)]
语句或表达式。
要消除警告,您必须将 allow(warning_type)
属性 添加到受影响的表达式或其任何父表达式。如果您 仅 想消除对一个特定表达式的警告,您可以将属性添加到该 expression/statement:
fn main() {
#[allow(unused_variables)]
let not_used = 27;
#[allow(path_statements)]
std::io::stdin;
println!("hi!");
}
但是,向 statements/expressions 添加属性的功能(与项目相反,如函数)仍然有点损坏。特别是,在上面的代码中,std::io::stdin
行仍然会触发警告。您可以阅读有关此功能的持续讨论 here。
虽然通常没有必要使用属性。许多警告(如 unused_variables
和 unused_must_use
)可以通过 使用 let _ =
作为语句的左侧来消除。通常,任何以下划线开头的变量都不会触发未使用警告。
假设有一个警告,例如path_statements
、unused_variables
。有没有办法忽略其中的一个瞬间,而不将它们隔离到代码块或函数中?
要清楚,当代码中有一个警告时。我希望能够仅使该警告安静下来,而不必针对特定警告进行特殊更改。 并且在其他任何地方都没有这种静音警告,甚至稍后在同一功能中也是如此。
使用 GCC 可以按如下方式完成:
#pragma GCC diagnostic push
#pragma GCC diagnostic ignored "-Wformat"
/* Isolated region which doesn't raise warnings! */
this_would_raise_Wformat(args);
#pragma GCC diagnostic pop
Rust 是否具有同等能力?
注意,我问的是如何消除警告的一般情况。 我知道有一些方法可以解决未使用的 var 警告,例如
如果你想在一个模块中消除所有的警告,写例如#![allow(dead_code)]
(注意感叹号)在模块的顶部。这将在整个模块中禁用所有此类警告。您也可以调用 rustc
例如-A dead_code
.
您可以通过在模块顶部写入 [=13=] 来禁用所有警告。
您可以在忽略特定警告的地方插入 mod
规则(如 Rust book 中所述)。
正如卢卡斯所说,你也可以写成#[allow(dead_code)]
语句或表达式。
要消除警告,您必须将 allow(warning_type)
属性 添加到受影响的表达式或其任何父表达式。如果您 仅 想消除对一个特定表达式的警告,您可以将属性添加到该 expression/statement:
fn main() {
#[allow(unused_variables)]
let not_used = 27;
#[allow(path_statements)]
std::io::stdin;
println!("hi!");
}
但是,向 statements/expressions 添加属性的功能(与项目相反,如函数)仍然有点损坏。特别是,在上面的代码中,std::io::stdin
行仍然会触发警告。您可以阅读有关此功能的持续讨论 here。
虽然通常没有必要使用属性。许多警告(如 unused_variables
和 unused_must_use
)可以通过 使用 let _ =
作为语句的左侧来消除。通常,任何以下划线开头的变量都不会触发未使用警告。