我正在学习 Rust,并且遇到这样一个事实,即在变量名开头添加下划线会使编译器在未使用时不会发出警告。我想知道为什么存在该功能,因为不使用未使用的变量是不受欢迎的。
最佳答案
我可以看到几个原因:
- 您正在调用一个返回
#[must_use]
类型的函数,但在您的特定情况下,您知道可以安全地忽略该值。可以为此使用_
模式(这不是变量绑定(bind),它是自己的模式,但这可能是下划线前缀约定的来源),但您可能想要记录为什么忽略该值,或者该值是什么。根据我的经验,这在测试中尤为常见。 - 函数参数:您可能必须为参数命名,因为它是 API 的一部分,但实际上并不需要使用它。 Anonymous parameters were removed in the 2018 edition.
- 宏。在宏中创建的变量以后可能会或可能不会被使用。无法在宏调用中消除警告会很烦人。在这种情况下,有一个将下划线加倍的约定,例如由 clippy 的
used_underscore_binding
强制执行。 Lint 。 - RAII。您可能希望为它的析构函数副作用而存在一个变量,但不要以其他方式使用它。对于这个用例,不可能简单地使用
_
,因为_
不是变量绑定(bind),并且值不会在封闭 block 的末尾被丢弃,因为具有变量绑定(bind)。
关于variables - 为什么存在下划线前缀变量?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48361537/