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
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
use std::ffi::CString;
use std::io::stdin;

/// get input from keyboard, return String
pub fn get_input() -> String {
    let mut data = String::new();
    stdin().read_line(&mut data).expect("Unable to read line!");
    data.trim_end().to_string()
}

/// get i32 input
pub fn get_i32_input() -> i32 {
    loop {
        let data = get_input();
        match data.trim().parse() {
            Ok(num) => return num,
            Err(_) => {
                println!("Invalid Number!");
                continue;
            }
        };
    }
}

/// pause the terminal
pub fn pause() {
    println!("Press Enter Key...");
    let _ = get_input();
}

/// clear the terminal
pub fn cls() {
    unsafe {
        libc::system(CString::new("cls").unwrap_or_default().as_ptr());
    }
}

/// a macro that create String
#[macro_export]
macro_rules! str {
    ( $x:expr ) => {
        {
            String::from($x)
        }
    };
}