Reputation:
I want to check that a user entered an integer. If they didn't, I want to redirect them back to the input question:
println!("Place Your Chip");
let mut y_col: usize;
loop {
y_col = read!();
// Check if user entered in a integer or not
if y_col < 1 || y_col > 6 {
println!("Column space is 1 to 6");
continue;
} else {
y_col -= 1;
}
if game.check_column(y_col) {
println!("\t\t\t\t\t\t\t\tThe column you choose is full");
continue;
}
break;
}
Upvotes: 1
Views: 548
Reputation: 430584
The point of read!
is to handle errors by killing the thread so that the caller doesn’t need to worry about them. That’s why try_read!
exists:
#[macro_use]
extern crate text_io; // 0.1.7
fn main() {
let mut y_col: Result<usize, _>;
y_col = try_read!();
match y_col {
Ok(v) => println!("Got a number: {}", v),
Err(e) => eprintln!("Was not a number ({})", e),
}
}
$ cargo run
123
Got a number: 123
$ cargo run
moo
Was not a number (could not parse moo as target type of __try_read_var__)
Upvotes: 1