pub(crate) struct Constant(pub(crate) i64);
Expand description
A constant value for use in arithmetic in this crate.
This type is basically a bunch of shenanigans to make constants work in a sensible way with our range integers. Essentially, we really want constants to satisfy the following criteria:
- Defined in one place.
- Composable in that we can define constants in terms of other constants.
- Easy to use with any kind of range integer type.
- Specially constructed when used with ranged integers. That is, a ranged
integer value build from a constant should have computed min/max bounds
equivalent to the constant itself. (Normally, a
rN::new
will set the computed min/max bounds to the MIN/MAX bounds overall, since it is assumed thatrN::new
accepts a value that can vary to any legal value in the range. But a constant needs tight bounds because, well, it can literally never vary.)
§Trait implementations
It’d be nice to impl Add/Sub/Mul/Div
for Constant
itself, but they
can’t be used in a const context… which is where it would be most useful.
Otherwise, we just define Add/Sub/Mul/Div
impls for all of the ranged
integer types so that constants can be used on the left-hand side of
arithmetic expressions. (The ranged integer types have impls that are
generic enough to support arithmetic with constants on the right hand
side.)
We do a similar thing for the Partial{Eq,Ord}
traits. The ranged integers
already have impls for Constant
on the right-hand side. Below are the
impls for Constant
on the left-hand side.
All of the trait impls that deal with constants and ranged integers are implemented with the ranged integer types.
Tuple Fields§
§0: i64
Implementations§
Trait Implementations§
Source§impl<const MIN: i128, const MAX: i128> AddAssign<Constant> for ri128<MIN, MAX>
impl<const MIN: i128, const MAX: i128> AddAssign<Constant> for ri128<MIN, MAX>
Source§fn add_assign(&mut self, rhs: Constant)
fn add_assign(&mut self, rhs: Constant)
+=
operation. Read moreSource§impl<const MIN: i128, const MAX: i128> AddAssign<Constant> for ri16<MIN, MAX>
impl<const MIN: i128, const MAX: i128> AddAssign<Constant> for ri16<MIN, MAX>
Source§fn add_assign(&mut self, rhs: Constant)
fn add_assign(&mut self, rhs: Constant)
+=
operation. Read moreSource§impl<const MIN: i128, const MAX: i128> AddAssign<Constant> for ri32<MIN, MAX>
impl<const MIN: i128, const MAX: i128> AddAssign<Constant> for ri32<MIN, MAX>
Source§fn add_assign(&mut self, rhs: Constant)
fn add_assign(&mut self, rhs: Constant)
+=
operation. Read moreSource§impl<const MIN: i128, const MAX: i128> AddAssign<Constant> for ri64<MIN, MAX>
impl<const MIN: i128, const MAX: i128> AddAssign<Constant> for ri64<MIN, MAX>
Source§fn add_assign(&mut self, rhs: Constant)
fn add_assign(&mut self, rhs: Constant)
+=
operation. Read moreSource§impl<const MIN: i128, const MAX: i128> AddAssign<Constant> for ri8<MIN, MAX>
impl<const MIN: i128, const MAX: i128> AddAssign<Constant> for ri8<MIN, MAX>
Source§fn add_assign(&mut self, rhs: Constant)
fn add_assign(&mut self, rhs: Constant)
+=
operation. Read moreSource§impl<const MIN: i128, const MAX: i128> DivAssign<Constant> for ri128<MIN, MAX>
impl<const MIN: i128, const MAX: i128> DivAssign<Constant> for ri128<MIN, MAX>
Source§fn div_assign(&mut self, rhs: Constant)
fn div_assign(&mut self, rhs: Constant)
/=
operation. Read moreSource§impl<const MIN: i128, const MAX: i128> DivAssign<Constant> for ri16<MIN, MAX>
impl<const MIN: i128, const MAX: i128> DivAssign<Constant> for ri16<MIN, MAX>
Source§fn div_assign(&mut self, rhs: Constant)
fn div_assign(&mut self, rhs: Constant)
/=
operation. Read moreSource§impl<const MIN: i128, const MAX: i128> DivAssign<Constant> for ri32<MIN, MAX>
impl<const MIN: i128, const MAX: i128> DivAssign<Constant> for ri32<MIN, MAX>
Source§fn div_assign(&mut self, rhs: Constant)
fn div_assign(&mut self, rhs: Constant)
/=
operation. Read moreSource§impl<const MIN: i128, const MAX: i128> DivAssign<Constant> for ri64<MIN, MAX>
impl<const MIN: i128, const MAX: i128> DivAssign<Constant> for ri64<MIN, MAX>
Source§fn div_assign(&mut self, rhs: Constant)
fn div_assign(&mut self, rhs: Constant)
/=
operation. Read moreSource§impl<const MIN: i128, const MAX: i128> DivAssign<Constant> for ri8<MIN, MAX>
impl<const MIN: i128, const MAX: i128> DivAssign<Constant> for ri8<MIN, MAX>
Source§fn div_assign(&mut self, rhs: Constant)
fn div_assign(&mut self, rhs: Constant)
/=
operation. Read moreSource§impl<const MIN: i128, const MAX: i128> MulAssign<Constant> for ri128<MIN, MAX>
impl<const MIN: i128, const MAX: i128> MulAssign<Constant> for ri128<MIN, MAX>
Source§fn mul_assign(&mut self, rhs: Constant)
fn mul_assign(&mut self, rhs: Constant)
*=
operation. Read moreSource§impl<const MIN: i128, const MAX: i128> MulAssign<Constant> for ri16<MIN, MAX>
impl<const MIN: i128, const MAX: i128> MulAssign<Constant> for ri16<MIN, MAX>
Source§fn mul_assign(&mut self, rhs: Constant)
fn mul_assign(&mut self, rhs: Constant)
*=
operation. Read moreSource§impl<const MIN: i128, const MAX: i128> MulAssign<Constant> for ri32<MIN, MAX>
impl<const MIN: i128, const MAX: i128> MulAssign<Constant> for ri32<MIN, MAX>
Source§fn mul_assign(&mut self, rhs: Constant)
fn mul_assign(&mut self, rhs: Constant)
*=
operation. Read moreSource§impl<const MIN: i128, const MAX: i128> MulAssign<Constant> for ri64<MIN, MAX>
impl<const MIN: i128, const MAX: i128> MulAssign<Constant> for ri64<MIN, MAX>
Source§fn mul_assign(&mut self, rhs: Constant)
fn mul_assign(&mut self, rhs: Constant)
*=
operation. Read moreSource§impl<const MIN: i128, const MAX: i128> MulAssign<Constant> for ri8<MIN, MAX>
impl<const MIN: i128, const MAX: i128> MulAssign<Constant> for ri8<MIN, MAX>
Source§fn mul_assign(&mut self, rhs: Constant)
fn mul_assign(&mut self, rhs: Constant)
*=
operation. Read moreSource§impl Ord for Constant
impl Ord for Constant
Source§impl<const MIN: i128, const MAX: i128> PartialOrd<Constant> for ri128<MIN, MAX>
impl<const MIN: i128, const MAX: i128> PartialOrd<Constant> for ri128<MIN, MAX>
Source§impl<const MIN: i128, const MAX: i128> PartialOrd<Constant> for ri16<MIN, MAX>
impl<const MIN: i128, const MAX: i128> PartialOrd<Constant> for ri16<MIN, MAX>
Source§impl<const MIN: i128, const MAX: i128> PartialOrd<Constant> for ri32<MIN, MAX>
impl<const MIN: i128, const MAX: i128> PartialOrd<Constant> for ri32<MIN, MAX>
Source§impl<const MIN: i128, const MAX: i128> PartialOrd<Constant> for ri64<MIN, MAX>
impl<const MIN: i128, const MAX: i128> PartialOrd<Constant> for ri64<MIN, MAX>
Source§impl<const MIN: i128, const MAX: i128> PartialOrd<Constant> for ri8<MIN, MAX>
impl<const MIN: i128, const MAX: i128> PartialOrd<Constant> for ri8<MIN, MAX>
Source§impl<const MIN: i128, const MAX: i128> PartialOrd<ri128<MIN, MAX>> for Constant
impl<const MIN: i128, const MAX: i128> PartialOrd<ri128<MIN, MAX>> for Constant
Source§impl<const MIN: i128, const MAX: i128> PartialOrd<ri16<MIN, MAX>> for Constant
impl<const MIN: i128, const MAX: i128> PartialOrd<ri16<MIN, MAX>> for Constant
Source§impl<const MIN: i128, const MAX: i128> PartialOrd<ri32<MIN, MAX>> for Constant
impl<const MIN: i128, const MAX: i128> PartialOrd<ri32<MIN, MAX>> for Constant
Source§impl<const MIN: i128, const MAX: i128> PartialOrd<ri64<MIN, MAX>> for Constant
impl<const MIN: i128, const MAX: i128> PartialOrd<ri64<MIN, MAX>> for Constant
Source§impl<const MIN: i128, const MAX: i128> PartialOrd<ri8<MIN, MAX>> for Constant
impl<const MIN: i128, const MAX: i128> PartialOrd<ri8<MIN, MAX>> for Constant
Source§impl PartialOrd for Constant
impl PartialOrd for Constant
Source§impl<const MIN: i128, const MAX: i128> RemAssign<Constant> for ri128<MIN, MAX>
impl<const MIN: i128, const MAX: i128> RemAssign<Constant> for ri128<MIN, MAX>
Source§fn rem_assign(&mut self, rhs: Constant)
fn rem_assign(&mut self, rhs: Constant)
%=
operation. Read moreSource§impl<const MIN: i128, const MAX: i128> RemAssign<Constant> for ri16<MIN, MAX>
impl<const MIN: i128, const MAX: i128> RemAssign<Constant> for ri16<MIN, MAX>
Source§fn rem_assign(&mut self, rhs: Constant)
fn rem_assign(&mut self, rhs: Constant)
%=
operation. Read moreSource§impl<const MIN: i128, const MAX: i128> RemAssign<Constant> for ri32<MIN, MAX>
impl<const MIN: i128, const MAX: i128> RemAssign<Constant> for ri32<MIN, MAX>
Source§fn rem_assign(&mut self, rhs: Constant)
fn rem_assign(&mut self, rhs: Constant)
%=
operation. Read moreSource§impl<const MIN: i128, const MAX: i128> RemAssign<Constant> for ri64<MIN, MAX>
impl<const MIN: i128, const MAX: i128> RemAssign<Constant> for ri64<MIN, MAX>
Source§fn rem_assign(&mut self, rhs: Constant)
fn rem_assign(&mut self, rhs: Constant)
%=
operation. Read moreSource§impl<const MIN: i128, const MAX: i128> RemAssign<Constant> for ri8<MIN, MAX>
impl<const MIN: i128, const MAX: i128> RemAssign<Constant> for ri8<MIN, MAX>
Source§fn rem_assign(&mut self, rhs: Constant)
fn rem_assign(&mut self, rhs: Constant)
%=
operation. Read moreSource§impl<const MIN: i128, const MAX: i128> SubAssign<Constant> for ri128<MIN, MAX>
impl<const MIN: i128, const MAX: i128> SubAssign<Constant> for ri128<MIN, MAX>
Source§fn sub_assign(&mut self, rhs: Constant)
fn sub_assign(&mut self, rhs: Constant)
-=
operation. Read moreSource§impl<const MIN: i128, const MAX: i128> SubAssign<Constant> for ri16<MIN, MAX>
impl<const MIN: i128, const MAX: i128> SubAssign<Constant> for ri16<MIN, MAX>
Source§fn sub_assign(&mut self, rhs: Constant)
fn sub_assign(&mut self, rhs: Constant)
-=
operation. Read moreSource§impl<const MIN: i128, const MAX: i128> SubAssign<Constant> for ri32<MIN, MAX>
impl<const MIN: i128, const MAX: i128> SubAssign<Constant> for ri32<MIN, MAX>
Source§fn sub_assign(&mut self, rhs: Constant)
fn sub_assign(&mut self, rhs: Constant)
-=
operation. Read moreSource§impl<const MIN: i128, const MAX: i128> SubAssign<Constant> for ri64<MIN, MAX>
impl<const MIN: i128, const MAX: i128> SubAssign<Constant> for ri64<MIN, MAX>
Source§fn sub_assign(&mut self, rhs: Constant)
fn sub_assign(&mut self, rhs: Constant)
-=
operation. Read moreSource§impl<const MIN: i128, const MAX: i128> SubAssign<Constant> for ri8<MIN, MAX>
impl<const MIN: i128, const MAX: i128> SubAssign<Constant> for ri8<MIN, MAX>
Source§fn sub_assign(&mut self, rhs: Constant)
fn sub_assign(&mut self, rhs: Constant)
-=
operation. Read more