如何抑制测试使用的函数的“函数永不使用”警告?

问题描述 投票:14回答:3

我在Rust写一个程序,我有一些测试。我为这些测试编写了一个辅助函数,但每当我使用cargo build构建时,它都警告我该函数从未使用过:

警告:从不使用函数:...#[warn(dead_code)]默认打开

我如何将此功能标记为使用以便不发出警告?

rust
3个回答
21
投票

Specific question

我如何将此功能标记为使用以便不发出警告?

Rust编译器运行许多lints来警告你代码中可能存在的问题,而dead_code lint就是其中之一。在代码完成时指出错误非常有用,但在早期阶段也可能是麻烦。但是,可以通过allowing关闭所有lints,并且您的错误消息(#[warn(dead_code)] on by default)包含您可以禁用的lint的名称。

#[allow(dead_code)]
fn my_unused_function() {}

Alternative for testing

我为这些测试编写了一个辅助函数,但每当我使用cargo build构建时,它都会警告我该函数从未使用过。

这恰好是一种特殊情况,即在真正的可执行文件中不需要仅用于测试的代码,并且可能不应该包含该代码。

为了可选地禁用编译测试代码,您可以使用带有cfg attribute配置文件的test相应地对其进行标记。

#[cfg(test)]
fn my_test_specific_function() {}

以这种方式标记时,编译器知道在编译期间忽略该方法。这与在C或C ++等其他语言中常用的ifdef用法相似,除非定义了TESTING,否则您要告诉预处理器忽略所附的代码。

#ifdef TESTING
...
#endif

8
投票

如果某些东西仅用于测试,则应完全省略。这可以使用#[cfg(test)]属性来完成。


5
投票

dead_code是一个棉绒,这意味着你可以allow它的东西导致它触发。

#[allow(dead_code)]
fn dummy() {}

fn main() {}
© www.soinside.com 2019 - 2024. All rights reserved.