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

时间:2015-05-08 14:43:28

标签: input rust stdin

我正在看看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个变量绑定的情况下获取输入?

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)]并禁用未使用的变量警告。虽然,我不推荐它。