我正在try 创建一个从标准输入中获取输入的方法.它应该循环,直到输入是有效的整数,我可以将其解析为整数.我收到的错误是:
error[E0282]: type annotations needed for `Result<F, _>`
--> src/lib.rs:9:13
|
9 | let parsed_int_result = line.trim().parse(); // Getting the error here
| ^^^^^^^^^^^^^^^^^
|
help: consider giving `parsed_int_result` an explicit type, where the placeholders `_` are specified
|
9 | let parsed_int_result: Result<F, _> = line.trim().parse(); // Getting the error here
| ++++++++++++++
我认为match语句是错误的,但我不知道我应该如何解决它.我只是想抓住Err()
,并再次try ,直到结果值是Ok()
.
pub fn input_int_with_message(msg: &str) -> i32 {
let mut parsed_int;
println!("{msg}");
loop {
let mut line = String::new();
std::io::stdin()
.read_line(&mut line)
.expect("Couldn't read from stdin");
let parsed_int_result = line.trim().parse(); // Getting the error here
let parsed_int = match parsed_int_result {
Ok(integer) => {
integer;
break;
},
Err(error) => println!("Input was not an integer. Try again:"),
};
}
parsed_int
}