我正在看看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警告:未使用的变量:
input
,默认打开#[warn(unused_variables)]src / main.rs:10 let input = reader.read_line(& mut number)
如果我只是使用input
变量,无论我输入什么号码,当打印号码时,我会得到“2”作为回报。
如何避免警告?我是否有另一种方法可以在不创建2个变量绑定的情况下获取输入?
答案 0 :(得分:6)
您不能将值写入变量。只要值的类型未标记为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
包来获得超短且可读的输入,例如
let i: i32 = read!()
let tup: (i32, String) = read!("{}, {}");
[/商业]
答案 1 :(得分:3)
它会创建一个警告,因为您正在为从未使用过的变量分配空间。
当遇到此类警告时,您可以使用_
let _ = io::stdin().read_line(&mut number) ...
或者正如ker所说,只需完全删除变量
io::stdin().read_line(&mut number)...
_
也适用于其他情况,如参数或match
子句。
另外一个选项是在模块或包中添加#[allow(unused_variables)]
并禁用未使用的变量警告。虽然,我不推荐它。