如何在不收到 "Unsed Variable" 警告的情况下获取用户输入?

How can I get user input without receiving an "Unsed Variable" warning?

我正在研究 Rust 并决定构建一个小程序来接收用户的输入并打印它,但也想用它做一些数学练习以供练习。目前,这就是我接受用户输入的方式:

let mut number = String::new();

let input = io::stdin().read_line(&mut number)
    .ok()
    .expect("Failed to read line");

println!("You entered {}", number);

然而,尽管我确实通过这种方式获得了正确的输入,但 Cargo 给了我以下警告:

src/main.rs:10:9: 10:14 warning: unused variable: input, #[warn(unused_variables)] on by default

src/main.rs:10 let input = reader.read_line(&mut number)

如果我只使用 input 变量,无论我输入什么数字,当我打印数字时,我都会在 return 中得到一个“2”。

如何避免警告?有没有其他方法可以让我在不创建 2 个变量绑定的情况下获取输入?

您可以简单地不将值写入变量。只要没有标明值的类型must_use,就可以忽略该值

let mut number = String::new();

io::stdin().read_line(&mut number)
           .ok()
           .expect("Failed to read line");

println!("You entered {}", number);

[商业]

您可以使用 text_io crate 进行超短且可读的输入,例如

let i: i32 = read!()
let tup: (i32, String) = read!("{}, {}");

[/商业]

它会创建一个警告,因为您正在为一个从未使用过的变量分配 space。

当遇到此类警告时,您可以将有问题的变量替换为 _

let _ = io::stdin().read_line(&mut number) ...

或者如 ker 所述,完全删除变量

io::stdin().read_line(&mut number)...

_ 也适用于其他情况,例如参数或 match 子句。


另一个选项是在模块或 crate 中添加 #[allow(unused_variables)] 并禁用未使用的变量警告。虽然,我不推荐。