eval.rs (989B)
1 pub fn do_math(arguments: String, operator: char) -> u32 { 2 let split_args = arguments.split("-").collect::<Vec<&str>>(); 3 4 let num1: u32 = match split_args[0].parse() { 5 Ok(num) => num, 6 Err(_e) => panic!("ArgumentError: Not a number: {}", split_args[0]), 7 }; 8 9 let num2: u32 = match split_args[1].parse() { 10 Ok(num) => num, 11 Err(_e) => panic!("ArgumentError: Not a number: {}", split_args[1]), 12 }; 13 14 match operator { 15 '+' => num1 + num2, 16 '-' => num1 - num2, 17 '*' => num1 * num2, 18 '/' => num1 / num2, 19 _ => panic!("SyntaxError: Unknown operator {}", operator), 20 } 21 } 22 23 pub fn args_or_comments(arguments: &str) -> String { 24 let argument_vec: Vec<char> = arguments.chars().collect(); 25 let mut builder: String = String::from(""); 26 27 for char in argument_vec { 28 if char == '#' { 29 break; 30 } else { 31 builder.push_str(&char.to_string()); 32 } 33 } 34 35 builder 36 }