【发布时间】:2016-12-19 01:15:29
【问题描述】:
考虑以下程序,我如何检测标准输入中的 EOF 并打破循环?
use std::io;
use std::process;
fn main() {
let mut sum = 0;
loop {
let mut number_str = String::new();
match io::stdin().read_line(&mut number_str) {
Ok(n) => {},
Err(e) => { println!("ERROR: got '{}' when reading a line", e) }
}
match number_str.trim().parse::<i32>() {
Err(n) => {
println!("ERROR: Entered something that is not a number: '{}'",
number_str.trim_right());
process::exit(1)
},
Ok(n) => { sum += n }
}
}
}
注意:有一个identical question,但答案似乎已经过时了,这就是我在问题标题中添加版本号的原因。
【问题讨论】:
-
我也欢迎在 cmets 中进行任何样式改进。
标签: rust