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
}