Existing answers I've found are all based on from_str
(such as Reading in user input from console once efficiently), but apparently from_str(x)
has changed into x.parse()
in Rust 1.0. As a newbie, it's not obvious how the original solution should be adapted taking this change into account.
As of Rust 1.0, what is the easiest way to get an integer input from the user?
Here is a version with all optional type annotations and error handling which may be useful for beginners like me:
use std::io;
fn main() {
let mut input_text = String::new();
io::stdin()
.read_line(&mut input_text)
.expect("failed to read from stdin");
let trimmed = input_text.trim();
match trimmed.parse::<i32>() {
Ok(i) => println!("your integer input: {}", i),
Err(..) => println!("input is not an integer: {}", trimmed),
};
}