Я пишу очень простой калькулятор командной строки на ржавчине, получаю число, оператор, затем другое число, делаю вычисления и печатаю результат. Чтобы показать, что я получаю из командных аргументов, я напечатал их в цикле перед основным кодом. Я отлично работаю для плюса, минуса и деления, но для умножения я получаю неожиданный результат, поскольку при печати вместо звездочки (*) для умножения я получаю список файлов в моем текущем каталоге.
Вот мой код ржавчины, я буду признателен за объяснение, и если есть какие-либо обходные пути.
use std::env;
fn main(){
let args: Vec<String> = env::args().collect();
for arg in args.iter(){
println!("{}", arg);
}
let mut result = 0;
let opt = args[2].to_string();
let oper1 = args[1].parse::<i32>().unwrap();
let oper2 = args[3].parse::<i32>().unwrap();
match opt.as_ref(){
"+" => result = oper1 + oper2,
"-" => result = oper1 - oper2,
"*" => result = oper1 * oper2,
"/" => result = oper1 / oper2,
_ => println!("Error")
}
println!("{} {} {} = {}", oper1, opt, oper2, result);
}