无法将字符串从标准输入解析为浮点 - Rust

Joe*_*ydt 2 floating-point casting type-conversion rust

在 Rust 中将 String 类型值解析为浮点类型值时,一切都可以正常工作
"let pi: f64 = 3.14".parse().unwrap();

然而,当解析来自标准输入的 String 类型值时,即使它是完全相同的值,程序也会出现恐慌并抛出:

线程“main”在“调用Result::unwrap()一个Err 值:ParseFloatError { kind:Invalid }”时惊慌失措,src/libcore/result.rs:999:5 注意:使用RUST_BACKTRACE=1环境变量运行以显示回溯。

我检查了值的类型,它一个字符串,所以我不明白错误是什么,并且我无法找到与标准输入(stdin)和此问题相关的任何内容。还有其他人遇到过这个吗?有没有什么好的办法可以避免恐慌呢?

这是一些复制该问题的代码:

use std::io::{stdin,stdout,Write};

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

    println!("Give a number ");

    stdin().read_line(&mut s)
        .expect("Did not enter a correct string");

    let user_input: f64 = s.parse().unwrap();

    println!("{:?}", user_input)
}
Run Code Online (Sandbox Code Playgroud)

提前致谢!

Jef*_*aar 10

根据 SCappella 的建议,需要删除新行。以下将起作用:

let user_input: f64 = s.trim().parse().unwrap();
Run Code Online (Sandbox Code Playgroud)