为什么从stdin读取的字符串永远不匹配与之比较的字符串?

时间:2018-12-02 18:31:51

标签: rust

我正在尝试使用以下代码在用户提供的字符串上match

use std::io;

fn main() {
    let mut input = String::new();

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

    match input.as_ref(){
        "test" => println!("That was test"),
        _ => print!("Something's wrong"),
    }
}

但是,即使我输入“ test”,此代码也始终显示“出了点问题”。我该如何按预期进行这项工作?

1 个答案:

答案 0 :(得分:3)

这与"test"不匹配,即使(看起来)您输入了"test",因为您也要通过按Enter输入新行,因此input实际上将包含{ {1}}。

您可以通过使用trim_end删除结尾的换行符来解决此问题:

"test\n"

但是,这不会修改原始字符串。