input_loop/lib.rs
1use std::io;
2
3pub fn input_loop<T>(prompt: &str) -> T
4where T: std::str::FromStr,
5 <T as std::str::FromStr>::Err: std::fmt::Debug {
6 loop {
7 let mut input = String::new();
8 println!("{}", prompt);
9
10 io::stdin()
11 .read_line(&mut input)
12 .expect("Failed to read line");
13
14 match input.trim().parse() {
15 Ok(num) => return num,
16 Err(..) => println!("Invalid input"),
17 }
18 }
19}