Take for example fn checked_div(self, other: i8) -> Option<i8>
assert_eq!((-128i8).checked_div(-1), None);
assert_eq!((1i8).checked_div(0), None);
I would argue that these are different error cases. They should give different error messages. Of course checked_*
functions can’t be taken out, but they can be deprecated in favor of try_*
functions that return a Result
.
So in this case it would be fn try_div(self, other: i8) -> Result<i8, DivError>
so that it would actually tell you if it encountered a division by zero, underflow, overflow, etc.
Another advantage is that you could use these functions with the try!
macro since they would return a Result
.