When parsing a String type value to a floating-point type value in Rust, everything works fine with"let pi: f64 = 3.14".parse().unwrap();
.
However, when parsing a String type value that comes from standard input, even if it's the exact same value, the program panics and throws:
thread 'main' panicked at 'called
Result::unwrap()
on anErr
value: ParseFloatError { kind: Invalid }', src/libcore/result.rs:999:5 note: run withRUST_BACKTRACE=1
environment variable to display a backtrace.
I checked the value's type, and it is a String, so I don't understand what the error is about, and I haven't been able to find anything related specifically to standard input (stdin) and this issue. Has anyone else come across this? Is there a good way to prevent the panic?
Here is some code to replicate the issue:
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)
}
Thanks in advance!