use super::{
super::family::define_integer_family, Integer128, Integer16, Integer32, Integer64, Integer8,
};
use crate::number::traits::{
ConstLowerBounded, ConstNegOne, ConstOne, ConstUpperBounded, ConstZero, LowerBounded, NegOne,
Negative, One, Positive, UpperBounded, Zero,
};
#[cfg(feature = "dashu-int")]
use super::IntegerBig;
define_integer_family![build_variants:
Integers, "The family of [integer][super] numbers, also known as [`Z`][super::Z].",
common:
Integer+8, Integer+16, Integer+32, Integer+64, Integer+128
;
depending:
Big, IntegerBig, "dashu-int"
];
impl Positive for Integers {}
impl Negative for Integers {}
impl Zero for Integers {
#[inline]
fn new_zero() -> Self {
Integer8::new_zero().into()
}
}
impl One for Integers {
#[inline]
fn new_one() -> Self {
Integer8::new_one().into()
}
}
impl NegOne for Integers {
#[inline]
fn new_neg_one() -> Self {
Integer8::new_neg_one().into()
}
}
impl ConstZero for Integers {
const ZERO: Self = Integers::_8(Integer8::ZERO);
}
impl ConstOne for Integers {
const ONE: Self = Integers::_8(Integer8::ONE);
}
impl ConstNegOne for Integers {
const NEG_ONE: Self = Integers::_8(Integer8::NEG_ONE);
}
impl LowerBounded for Integers {
#[inline]
fn new_min() -> Self {
Integer8::new_min().into()
}
}
impl UpperBounded for Integers {
#[inline]
fn new_max() -> Self {
Integer128::new_max().into()
}
}
impl ConstLowerBounded for Integers {
const MIN: Self = Integers::_128(Integer128::MIN);
}
impl ConstUpperBounded for Integers {
const MAX: Self = Integers::_128(Integer128::MAX);
}