use constrained_int::i8::{ConstrainedI8, ConstrainedI8Error};
type Constrained = ConstrainedI8<-5, 10, -1>;
type ConstrainedError = ConstrainedI8Error<-5, 10>;
fn main() -> Result<(), ConstrainedError> {
let mut constrained = Constrained::default();
assert_eq!(constrained.get(), -1);
constrained.set(-5)?;
assert_eq!(constrained.get(), -5);
assert_eq!(constrained.checked_sub(1), None);
assert_eq!(constrained.get(), -5);
constrained = constrained.saturating_add(100);
assert_eq!(constrained.get(), 10);
assert!(constrained.set(11).is_err());
constrained = constrained.wrapping_add(1);
assert_eq!(constrained.get(), -5);
Ok(())
}