pub struct RangedIsize<const MIN: isize, const MAX: isize>(/* private fields */);Expand description
An isize that is known to be in the range MIN..=MAX.
Implementations§
Source§impl RangedIsize<0, 0>
impl RangedIsize<0, 0>
pub const fn exact<const VALUE: isize>() -> RangedIsize<VALUE, VALUE>
Source§impl<const MIN: isize, const MAX: isize> RangedIsize<MIN, MAX>
impl<const MIN: isize, const MAX: isize> RangedIsize<MIN, MAX>
Sourcepub const unsafe fn new_unchecked(value: isize) -> Self
pub const unsafe fn new_unchecked(value: isize) -> Self
Creates a ranged integer without checking the value.
§Safety
The value must be within the range MIN..=MAX.
Sourcepub const fn new(value: isize) -> Option<Self>
pub const fn new(value: isize) -> Option<Self>
Creates a ranged integer if the given value is in the range MIN..=MAX.
Sourcepub const fn new_static<const VALUE: isize>() -> Self
pub const fn new_static<const VALUE: isize>() -> Self
Creates a ranged integer with a statically known value. Fails to compile if the value is not in range.
Sourcepub const fn new_saturating(value: isize) -> Self
pub const fn new_saturating(value: isize) -> Self
Creates a ranged integer with the given value, saturating if it is out of range.
Sourcepub const fn expand<const NEW_MIN: isize, const NEW_MAX: isize>(
self,
) -> RangedIsize<NEW_MIN, NEW_MAX>
pub const fn expand<const NEW_MIN: isize, const NEW_MAX: isize>( self, ) -> RangedIsize<NEW_MIN, NEW_MAX>
Expand the range that the value may be in. Fails to compile if the new range is not a superset of the current range.
Sourcepub const fn narrow<const NEW_MIN: isize, const NEW_MAX: isize>(
self,
) -> Option<RangedIsize<NEW_MIN, NEW_MAX>>
pub const fn narrow<const NEW_MIN: isize, const NEW_MAX: isize>( self, ) -> Option<RangedIsize<NEW_MIN, NEW_MAX>>
Attempt to narrow the range that the value may be in. Returns None if the value
is outside the new range. Fails to compile if the new range is not a subset of
the current range.
Sourcepub fn from_str_radix(src: &str, radix: u32) -> Result<Self, ParseIntError>
pub fn from_str_radix(src: &str, radix: u32) -> Result<Self, ParseIntError>
Converts a string slice in a given base to an integer.
The string is expected to be an optional + or - sign followed by digits. Leading
and trailing whitespace represent an error. Digits are a subset of these characters,
depending on radix:
0-9a-zA-Z
§Panics
Panics if radix is not in the range 2..=36.
§Examples
Basic usage:
assert_eq!(RangedIsize::<5, 10>::from_str_radix("A", 16), Ok(RangedIsize::new_static::<10>()));Sourcepub const fn checked_add(self, rhs: isize) -> Option<Self>
pub const fn checked_add(self, rhs: isize) -> Option<Self>
Checked integer addition. Computes self + rhs, returning None if the resulting
value is out of range.
Sourcepub const unsafe fn unchecked_add(self, rhs: isize) -> Self
pub const unsafe fn unchecked_add(self, rhs: isize) -> Self
Unchecked integer addition. Computes self + rhs, assuming that the result is in
range.
§Safety
The result of self + rhs must be in the range MIN..=MAX.
Sourcepub const fn checked_sub(self, rhs: isize) -> Option<Self>
pub const fn checked_sub(self, rhs: isize) -> Option<Self>
Checked integer addition. Computes self - rhs, returning None if the resulting
value is out of range.
Sourcepub const unsafe fn unchecked_sub(self, rhs: isize) -> Self
pub const unsafe fn unchecked_sub(self, rhs: isize) -> Self
Unchecked integer subtraction. Computes self - rhs, assuming that the result is in
range.
§Safety
The result of self - rhs must be in the range MIN..=MAX.
Sourcepub const fn checked_mul(self, rhs: isize) -> Option<Self>
pub const fn checked_mul(self, rhs: isize) -> Option<Self>
Checked integer addition. Computes self * rhs, returning None if the resulting
value is out of range.
Sourcepub const unsafe fn unchecked_mul(self, rhs: isize) -> Self
pub const unsafe fn unchecked_mul(self, rhs: isize) -> Self
Unchecked integer multiplication. Computes self * rhs, assuming that the result is
in range.
§Safety
The result of self * rhs must be in the range MIN..=MAX.
Sourcepub const fn checked_div(self, rhs: isize) -> Option<Self>
pub const fn checked_div(self, rhs: isize) -> Option<Self>
Checked integer addition. Computes self / rhs, returning None if rhs == 0 or
if the resulting value is out of range.
Sourcepub const unsafe fn unchecked_div(self, rhs: isize) -> Self
pub const unsafe fn unchecked_div(self, rhs: isize) -> Self
Unchecked integer division. Computes self / rhs, assuming that rhs != 0 and that
the result is in range.
§Safety
self must not be zero and the result of self / rhs must be in the range
MIN..=MAX.
Sourcepub const fn checked_div_euclid(self, rhs: isize) -> Option<Self>
pub const fn checked_div_euclid(self, rhs: isize) -> Option<Self>
Checked Euclidean division. Computes self.div_euclid(rhs), returning None if
rhs == 0 or if the resulting value is out of range.
Sourcepub const unsafe fn unchecked_div_euclid(self, rhs: isize) -> Self
pub const unsafe fn unchecked_div_euclid(self, rhs: isize) -> Self
Unchecked Euclidean division. Computes self.div_euclid(rhs), assuming that
rhs != 0 and that the result is in range.
§Safety
self must not be zero and the result of self.div_euclid(rhs) must be in the
range MIN..=MAX.
Sourcepub const fn checked_rem(self, rhs: isize) -> Option<Self>
pub const fn checked_rem(self, rhs: isize) -> Option<Self>
Checked integer remainder. Computes self % rhs, returning None if rhs == 0 or
if the resulting value is out of range.
Sourcepub const unsafe fn unchecked_rem(self, rhs: isize) -> Self
pub const unsafe fn unchecked_rem(self, rhs: isize) -> Self
Unchecked remainder. Computes self % rhs, assuming that rhs != 0 and that the
result is in range.
§Safety
self must not be zero and the result of self % rhs must be in the range
MIN..=MAX.
Sourcepub const fn checked_rem_euclid(self, rhs: isize) -> Option<Self>
pub const fn checked_rem_euclid(self, rhs: isize) -> Option<Self>
Checked Euclidean remainder. Computes self.rem_euclid(rhs), returning None if
rhs == 0 or if the resulting value is out of range.
Sourcepub const unsafe fn unchecked_rem_euclid(self, rhs: isize) -> Self
pub const unsafe fn unchecked_rem_euclid(self, rhs: isize) -> Self
Unchecked Euclidean remainder. Computes self.rem_euclid(rhs), assuming that
rhs != 0 and that the result is in range.
§Safety
self must not be zero and the result of self.rem_euclid(rhs) must be in the
range MIN..=MAX.
Sourcepub const fn checked_neg(self) -> Option<Self>
pub const fn checked_neg(self) -> Option<Self>
Checked negation. Computes -self, returning None if the resulting value is out
of range.
Sourcepub const unsafe fn unchecked_neg(self) -> Self
pub const unsafe fn unchecked_neg(self) -> Self
Unchecked negation. Computes -self, assuming that -self is in range.
§Safety
The result of -self must be in the range MIN..=MAX.
Sourcepub const fn neg(self) -> Self
pub const fn neg(self) -> Self
Negation. Computes self.neg(), failing to compile if the result is not
guaranteed to be in range.
Sourcepub const fn checked_shl(self, rhs: u32) -> Option<Self>
pub const fn checked_shl(self, rhs: u32) -> Option<Self>
Checked shift left. Computes self << rhs, returning None if the resulting value
is out of range.
Sourcepub const unsafe fn unchecked_shl(self, rhs: u32) -> Self
pub const unsafe fn unchecked_shl(self, rhs: u32) -> Self
Unchecked shift left. Computes self << rhs, assuming that the result is in range.
§Safety
The result of self << rhs must be in the range MIN..=MAX.
Sourcepub const fn checked_shr(self, rhs: u32) -> Option<Self>
pub const fn checked_shr(self, rhs: u32) -> Option<Self>
Checked shift right. Computes self >> rhs, returning None if
the resulting value is out of range.
Sourcepub const unsafe fn unchecked_shr(self, rhs: u32) -> Self
pub const unsafe fn unchecked_shr(self, rhs: u32) -> Self
Unchecked shift right. Computes self >> rhs, assuming that the result is in range.
§Safety
The result of self >> rhs must be in the range MIN..=MAX.
Sourcepub const fn checked_abs(self) -> Option<Self>
pub const fn checked_abs(self) -> Option<Self>
Checked absolute value. Computes self.abs(), returning None if the resulting
value is out of range.
Sourcepub const unsafe fn unchecked_abs(self) -> Self
pub const unsafe fn unchecked_abs(self) -> Self
Unchecked absolute value. Computes self.abs(), assuming that the result is in
range.
§Safety
The result of self.abs() must be in the range MIN..=MAX.
Sourcepub const fn abs(self) -> Self
pub const fn abs(self) -> Self
Absolute value. Computes self.abs(), failing to compile if the result is not
guaranteed to be in range.
Sourcepub const fn checked_pow(self, exp: u32) -> Option<Self>
pub const fn checked_pow(self, exp: u32) -> Option<Self>
Checked exponentiation. Computes self.pow(exp), returning None if the resulting
value is out of range.
Sourcepub const unsafe fn unchecked_pow(self, exp: u32) -> Self
pub const unsafe fn unchecked_pow(self, exp: u32) -> Self
Unchecked exponentiation. Computes self.pow(exp), assuming that the result is in
range.
§Safety
The result of self.pow(exp) must be in the range MIN..=MAX.
Sourcepub const fn saturating_add(self, rhs: isize) -> Self
pub const fn saturating_add(self, rhs: isize) -> Self
Saturating integer addition. Computes self + rhs, saturating at the numeric
bounds.
Sourcepub const fn saturating_sub(self, rhs: isize) -> Self
pub const fn saturating_sub(self, rhs: isize) -> Self
Saturating integer subtraction. Computes self - rhs, saturating at the numeric
bounds.
Sourcepub const fn saturating_neg(self) -> Self
pub const fn saturating_neg(self) -> Self
Saturating integer negation. Computes self - rhs, saturating at the numeric
bounds.
Sourcepub const fn saturating_abs(self) -> Self
pub const fn saturating_abs(self) -> Self
Saturating absolute value. Computes self.abs(), saturating at the numeric bounds.
Sourcepub const fn saturating_mul(self, rhs: isize) -> Self
pub const fn saturating_mul(self, rhs: isize) -> Self
Saturating integer multiplication. Computes self * rhs, saturating at the numeric
bounds.
Sourcepub const fn saturating_pow(self, exp: u32) -> Self
pub const fn saturating_pow(self, exp: u32) -> Self
Saturating integer exponentiation. Computes self.pow(exp), saturating at the
numeric bounds.
Sourcepub const fn wrapping_add(self, rhs: isize) -> Self
pub const fn wrapping_add(self, rhs: isize) -> Self
Wrapping integer addition. Computes self + rhs, wrapping around the numeric
bounds.
Sourcepub const fn wrapping_sub(self, rhs: isize) -> Self
pub const fn wrapping_sub(self, rhs: isize) -> Self
Wrapping integer subtraction. Computes self - rhs, wrapping around the numeric
bounds.
Trait Implementations§
Source§impl<const MIN: isize, const MAX: isize> Clone for RangedIsize<MIN, MAX>
impl<const MIN: isize, const MAX: isize> Clone for RangedIsize<MIN, MAX>
Source§fn clone(&self) -> RangedIsize<MIN, MAX>
fn clone(&self) -> RangedIsize<MIN, MAX>
1.0.0 · Source§fn clone_from(&mut self, source: &Self)
fn clone_from(&mut self, source: &Self)
source. Read more