При разборе значения типа String на значение типа с плавающей точкой в Rust все работает нормально"let pi: f64 = 3.14".parse().unwrap();
.
Однако при синтаксическом анализе значения типа String, полученного из стандартного ввода, даже если оно точно такое же значение, программа паникует и выдает:
thread 'main'panicked at' вызывается Result::unwrap()
для значения Err
: ParseFloatError {kind: Invalid} ', src / libcore / result.rs: 999: 5 note: запускать с переменной окружения 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)
}
Заранее спасибо!