Idiom # 86: Check if integer multiplication will overflow
Code
For all integers with wrap-around semantics (i.e. all the standard types i32,
u64, etc.), there are two ways to check for overflow on multiplication. First,
the predicate overflow_on_mul
checks if a multiplication of two
values would overflow. Next, there is a multiplication operator infix
*?
that performs overflow checking and returns an option
that can be checked afterwards.
Note that infix *
would result in a runtime error in case of an
overflow if debug checks are enabled. If overflow semantics are desired,
operator infix *°
has to be used.