1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31
use std::io; use std::io::Write; use std::str::FromStr; pub fn input<T: FromStr>(user_message: &str) -> Option<T> { print!("{}", user_message); io::stdout().flush().ok()?; let mut buffer: String = String::new(); io::stdin().read_line(&mut buffer).ok()?; Some(buffer.trim().parse().ok()?) } #[macro_export] macro_rules! tinput { ($f:ty $(,$t:ty)*) => { (input::<$f>("") $(, input::<$t>(""))*) } } pub fn parse_to_int(user_string: &str) -> i32 { let buffer: i32 = match user_string.parse::<i32>() { Ok(buffer) => buffer, Err(_e) => -1, }; buffer }