49 lines
965 B
Rust
49 lines
965 B
Rust
enum MATH {
|
|
ADD,
|
|
SUB,
|
|
MUL,
|
|
DEV,
|
|
}
|
|
|
|
struct Math {
|
|
a: i32,
|
|
b: i32,
|
|
}
|
|
|
|
impl Math {
|
|
fn init(a: i32, b: i32) -> Math {
|
|
return Math { a, b };
|
|
}
|
|
|
|
fn calculate(&self, operation: MATH) -> i32 {
|
|
match operation {
|
|
MATH::ADD => return self.a + self.b,
|
|
MATH::SUB => return self.a - self.b,
|
|
MATH::MUL => return self.a * self.b,
|
|
MATH::DEV => {
|
|
if self.b == 0 {
|
|
return 0;
|
|
} else {
|
|
return self.a / self.b;
|
|
}
|
|
}
|
|
}
|
|
}
|
|
|
|
fn reinit(&mut self, a: i32, b: i32) {
|
|
self.a = a;
|
|
self.b = b;
|
|
}
|
|
}
|
|
|
|
fn main() {
|
|
let operation: MATH = MATH::ADD;
|
|
let mut calculator: Math = Math::init(10, 4);
|
|
|
|
print!("ans: {}\n", calculator.calculate(operation));
|
|
|
|
calculator.reinit(32, 2);
|
|
|
|
println!("ans after reinit: {}", calculator.calculate(MATH::DEV));
|
|
}
|