exint 0.1.4

An implementation of generic signed and unsigned integers.
Documentation
Calculates the complete product `self * rhs` without the possibility to overflow.

This returns the low-order (wrapping) bits and the high-order (overflow) bits of
the result as two separate values, in that order.

If you also need to add a carry to the wide result, then you want
[`carrying_mul`] instead.

[`carrying_mul`]: Self::carrying_mul

# Examples

Basic usage:

```
# use ::exint::primitive::*;
# ::exint::uint! {
assert_eq!(5_i32.widening_mul(-2_i32), (4294967286_u32, -1_i32));
assert_eq!(1000000000_i32.widening_mul(-10_i32), (2884901888_u32, -3_i32));
# }
```