(void)Rust 的变量替代 [duplicate]

(void)variable alternative for Rust [duplicate]

提问人:Jaysmito Mukherjee 提问时间:7/30/2023 更新时间:7/30/2023 访问量:134

问:

这个问题在这里已经有答案了:
4个月前关闭。

社群在上个月审查了是否要重新讨论这个问题,并关闭了这个问题:

原始关闭原因未解决

正如标题所说,是否有像 Rust 中的 C/C++ 这样的 (void) 变量的替代方案。

我有一个回调函数,看起来像这样:

fn on_window_event(window: &cgl_rs::Window, event: &cgl_rs::Event) -> bool {
    // ... some code ...
    false
}

在这里,我不使用变量,因此我收到未使用的警告。window

我知道我可以禁用警告,但我想知道我们是否可以以任何其他好的方式处理这个问题。

c rust 警告未 使用的变量

评论

1赞 Jaysmito Mukherjee 7/30/2023
@DavidRanieri我已经提到过,我知道我可以禁用警告,但我想知道是否有不同/更好的方法
1赞 David Ranieri 7/30/2023
哎呀,我没注意那部分,对不起。在 C++ 中也有:stackoverflow.com/questions/39745817/...,但我没有看到 Rust 的等价物。[[maybe_unused]]
1赞 Finomnis 7/30/2023
您需要将变量命名为 。下划线告诉编译器它是故意未使用的。_window
0赞 Jaysmito Mukherjee 7/30/2023
@Finomnis谢谢,这就是我想要的。但是除了命名约定之外,没有其他东西吗?
1赞 Finomnis 7/30/2023
@JaysmitoMukherjee 请注意,如果您命名变量,您将不再收到它们的“未使用变量”警告,即使您确实打算使用它们。_xxx

答:

3赞 Finomnis 7/30/2023 #1

在 Rust 中,名称开头的下划线 () 用于将变量标记为未使用。_

pub fn foo(a: i32, b: i32) -> i32 {
    b * 2
}
$ cargo check
warning: unused variable: `a`
 --> src\lib.rs:1:12
  |
1 | pub fn foo(a: i32, b: i32) -> i32 {
  |            ^ help: if this is intentional, prefix it with an underscore: `_a`
  |
  = note: `#[warn(unused_variables)]` on by default
pub fn foo(_a: i32, b: i32) -> i32 {
    b * 2
}
$ cargo check
- no warning -

评论

4赞 Ömer Erden 7/30/2023
我可能还要补充一点:如果您没有从显式名称中受益,则可以将该名称完全替换为 IMO OP 没有必要,因为类型指向它是_Window
2赞 Finomnis 7/30/2023
@ÖmerErden 请注意,变量 with 不是一回事。 明确表示“立即销毁”,而表示“在范围结束时销毁”。__xxx__xxx
1赞 Finomnis 7/30/2023
@ÖmerErden 看这里: play.rust-lang.org/...
0赞 Ömer Erden 7/30/2023
是的,这是一种预期行为,因为您仍然可以用于程序的其余部分(尽管 clippy 不喜欢这样),但令我惊讶的是,如果您将其声明为函数参数,则相同的行为不适用,例如:play.rust-lang.org/..._xxx
1赞 Ömer Erden 7/30/2023
我想它们不是一回事,意味着不绑定(并不总是意味着立即销毁)。对于您的示例,它是一个下降,但就我而言,该对象已经存在,它只是移动到函数作用域中,没有绑定到任何标识符,然后在作用域的末尾丢弃。_