use super::{
super::family::define_integer_family, NonZeroInteger128, NonZeroInteger16, NonZeroInteger32,
NonZeroInteger64, NonZeroInteger8,
};
use crate::number::traits::{
ConstLowerBounded, ConstNegOne, ConstOne, ConstUpperBounded, LowerBounded, NegOne, Negative,
NonZero, One, Positive, UpperBounded,
};
define_integer_family![build_variants:
NonZeroIntegers, "The family of [non-zero integers][super], also known as [`N0z`][super::N0z].",
common:
NonZeroInteger+8, NonZeroInteger+16, NonZeroInteger+32, NonZeroInteger+64,
NonZeroInteger+128
;
depending:
Big, NonZeroIntegerBig, "dashu-int-TODO" ];
impl Positive for NonZeroIntegers {}
impl Negative for NonZeroIntegers {}
impl NonZero for NonZeroIntegers {}
impl NegOne for NonZeroIntegers {
#[inline]
fn new_neg_one() -> Self {
NonZeroInteger8::new_neg_one().into()
}
}
impl One for NonZeroIntegers {
#[inline]
fn new_one() -> Self {
NonZeroInteger8::new_one().into()
}
}
impl ConstNegOne for NonZeroIntegers {
const NEG_ONE: Self = NonZeroIntegers::_8(NonZeroInteger8::NEG_ONE);
}
impl ConstOne for NonZeroIntegers {
const ONE: Self = NonZeroIntegers::_8(NonZeroInteger8::ONE);
}
impl LowerBounded for NonZeroIntegers {
#[inline]
fn new_min() -> Self {
NonZeroInteger8::new_min().into()
}
}
impl UpperBounded for NonZeroIntegers {
#[inline]
fn new_max() -> Self {
NonZeroInteger128::new_max().into()
}
}
impl ConstLowerBounded for NonZeroIntegers {
const MIN: Self = NonZeroIntegers::_128(NonZeroInteger128::MIN);
}
impl ConstUpperBounded for NonZeroIntegers {
const MAX: Self = NonZeroIntegers::_128(NonZeroInteger128::MAX);
}