from_user/
lib.rs

1use std::{i32, io};
2
3const SRS:&str = "There has been a Serious Error with Liberary of Input. Please Contact the Developers";
4
5pub fn single_line() -> String{
6    let mut _flag = "ok";
7    let mut string_to_get_in = String::new();
8    let mut string_to_return = String::new();
9    match io::stdin().read_line(&mut string_to_get_in){
10        Ok(_) => string_to_return = string_to_get_in,
11        Err(_) => println!("Please Enter a Valid String"),
12    }
13    // TODO : Add a flag system which will alert the system if there is any problem
14    return string_to_return;
15}
16pub fn number() -> i32{
17    let mut _flag = "ok";
18    let mut string_to_get_in = String::new();
19    let mut string_to_return = String::new();
20    match io::stdin().read_line(&mut string_to_get_in){
21        Ok(_) => string_to_return = string_to_get_in,
22        Err(_) => _flag = "er",
23    }
24    // Checking if it is a String one by one
25    let word_length = string_to_return.len();
26    let mut loop_variable = 0;
27    while loop_variable < word_length {
28        let char_to_check = string_to_return.chars().nth(loop_variable).expect(SRS);
29        if !char_to_check.is_ascii_digit() {
30            println!("Please enter a Numerics only");
31            return number();
32        }
33        loop_variable += 1;
34    }
35    //Conversion of string to int
36    let int_to_return = match string_to_return.trim().parse() {
37        Ok(num) => num,
38        Err(_) => {println!("Only Number Supported , Try Again:");return number();},
39    };
40    return int_to_return;
41}