wrapping_in_range 0.1.1

Wrapping arithmetic for any range
Documentation

Wrapping-in-range arithmetic for custom ranges via the WrappingInRange type

These arithmetic operations act just like std's .wrapping_sub(), .wrapping_add(), etc. but for a custom user-provided range.

Examples

use wrapping_in_range::WrappingInRange;

let w = |i: i16| WrappingInRange(i, -1..=1);

assert_eq!(
    [-2, -1, 0, 1, 2].map(|i| w(i) - 1),
    [ 0, 1, -1, 0, 1]
);
assert_eq!(
    [-2, -1, 0,  1, 2].map(|i| w(i) + 1),
    [-1,  0, 1, -1, 0]
);