use std::error::Error;
const OPERATOR_DIVIDE:char = '/';
const OPERATOR_DIVIDE_BY_ZERO:char = '0';
const OPERATOR_SUBTRACT:char = '-';
const OPERATOR_ADDITION:char = '+';
fn main()
{
let mut number1:i32;
let mut number2:i32;
let mut operator:char;
let mut result:Result<i32, Box<dyn Error>>;
/*
Adding
Add 10 + 3 = 13
*/
number1 = 10;
number2 = 3;
operator = OPERATOR_ADDITION;
result = calc(operator, number1, number2);
println!(
"{:0?} {:1?} {:2?} is {:3?}"
, number1
, operator
, number2
, result
);
/*
Subtract
Add 10 - 8 = 2
*/
number1 = 10;
number2 = 8;
operator = OPERATOR_SUBTRACT;
result = calc(operator, number1, number2);
println!(
"{:0?} {:1?} {:2?} is {:3?}"
, number1
, operator
, number2
, result
);
/*
Divide
Add 10 / 2 = 2
*/
number1 = 10;
number2 = 2;
operator = OPERATOR_DIVIDE;
result = calc(operator, number1, number2);
println!(
"{:0?} {:1?} {:2?} is {:3?}"
, number1
, operator
, number2
, result
);
/*
Divide
Add 10 / 0 ???
*/
number1 = 10;
number2 = 0;
operator = OPERATOR_DIVIDE;
result = calc(operator, number1, number2);
println!(
"{:0?} {:1?} {:2?} is {:3?}"
, number1
, operator
, number2
, result
);
}
fn calc
(
operator:char
, number1:i32
, number2:i32
)-> Result<i32, Box<dyn Error>>
{
//declare variables
let result:i32;
//if operator is adding
if operator == OPERATOR_ADDITION
{
result = number1 + number2;
}
//if operator is subtract
else if operator == OPERATOR_SUBTRACT
{
result = number1 - number2;
}
//if operator is divide
else if operator == OPERATOR_DIVIDE
{
result = number1 / number2;
}
//if operator is divide by 0
else if operator == OPERATOR_DIVIDE_BY_ZERO
{
//result = number1 / 0;
result =0;
}
//else set result to zero (0)
else
{
result = 0;
}
//return OK indicator and result
return Ok(result);
}