exint 0.1.4

An implementation of generic signed and unsigned integers.
Documentation
Same value as `self | rhs`, but UB if any bit position is set in both inputs.

This is a situational micro-optimization for places where you'd rather use
addition on some platforms and bitwise or on other platforms, based on exactly
which instructions combine better with whatever else you're doing. Note that
there's no reason to bother using this for places where it's clear from the
operations involved that they can't overlap. For example, if you're combining
`u16`s into a `u32` with `((a as u32) << 16) | (b as u32)`, that's fine, as the
backend will know those sides of the `|` are disjoint without needing help.

# Safety

This results in undefined behavior when `(self & rhs) != 0`.

# Examples

Basic usage:

```
# use ::exint::primitive::*;
# ::exint::uint! {
// SAFETY: `1` and `4` have no bits in common.
unsafe {
    assert_eq!(1_u24.unchecked_disjoint_bitor(4_u24), 5_u24);
}
# }
```