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}