trait MyOperations { fn my_div(self, den: i64) -> Option; } impl MyOperations for i64 { fn my_div(self, den: i64) -> Option { if den != 0 { Some(self / den) } else { None } } } fn my_sum(a: &Option, b:&Option) -> Option { let va = (*a)?; let vb = (*b)?; Some(va + vb) } fn my_print(v: &Option) { match v { Some(i) => print!("{}", i), None => print!("None"), } } fn main() { let a = 6.my_div(3); let b = 8.my_div(2); let c = 6.my_div(0); let r1 = my_sum(&a, &b); let r2 = my_sum(&a, &c); print!("6 / 3 + 8 / 2 = "); my_print(&r1); println!(""); print!("6 / 3 + 6 / 0 = "); my_print(&r2); println!(""); }