pub struct RangedI16<const MIN: i16, const MAX: i16>(/* private fields */);
Expand description
An i16
that is known to be in the range MIN..=MAX
.
Implementations§
Source§impl<const MIN: i16, const MAX: i16> RangedI16<MIN, MAX>
impl<const MIN: i16, const MAX: i16> RangedI16<MIN, MAX>
Sourcepub const unsafe fn new_unchecked(value: i16) -> Self
pub const unsafe fn new_unchecked(value: i16) -> Self
Creates a ranged integer without checking the value.
§Safety
The value must be within the range MIN..=MAX
.
Sourcepub const fn new(value: i16) -> Option<Self>
pub const fn new(value: i16) -> Option<Self>
Creates a ranged integer if the given value is in the range MIN..=MAX
.
Sourcepub const fn new_static<const VALUE: i16>() -> Self
pub const fn new_static<const VALUE: i16>() -> 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: i16) -> Self
pub const fn new_saturating(value: i16) -> Self
Creates a ranged integer with the given value, saturating if it is out of range.
Sourcepub const fn expand<const NEW_MIN: i16, const NEW_MAX: i16>(
self,
) -> RangedI16<NEW_MIN, NEW_MAX>
pub const fn expand<const NEW_MIN: i16, const NEW_MAX: i16>( self, ) -> RangedI16<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: i16, const NEW_MAX: i16>(
self,
) -> Option<RangedI16<NEW_MIN, NEW_MAX>>
pub const fn narrow<const NEW_MIN: i16, const NEW_MAX: i16>( self, ) -> Option<RangedI16<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-9
a-z
A-Z
§Panics
Panics if radix
is not in the range 2..=36
.
§Examples
Basic usage:
assert_eq!(RangedI16::<5, 10>::from_str_radix("A", 16), Ok(RangedI16::new_static::<10>()));
Sourcepub const fn checked_add(self, rhs: i16) -> Option<Self>
pub const fn checked_add(self, rhs: i16) -> 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: i16) -> Self
pub const unsafe fn unchecked_add(self, rhs: i16) -> 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: i16) -> Option<Self>
pub const fn checked_sub(self, rhs: i16) -> 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: i16) -> Self
pub const unsafe fn unchecked_sub(self, rhs: i16) -> 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: i16) -> Option<Self>
pub const fn checked_mul(self, rhs: i16) -> 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: i16) -> Self
pub const unsafe fn unchecked_mul(self, rhs: i16) -> 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: i16) -> Option<Self>
pub const fn checked_div(self, rhs: i16) -> 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: i16) -> Self
pub const unsafe fn unchecked_div(self, rhs: i16) -> 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: i16) -> Option<Self>
pub const fn checked_div_euclid(self, rhs: i16) -> 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: i16) -> Self
pub const unsafe fn unchecked_div_euclid(self, rhs: i16) -> 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: i16) -> Option<Self>
pub const fn checked_rem(self, rhs: i16) -> 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: i16) -> Self
pub const unsafe fn unchecked_rem(self, rhs: i16) -> 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: i16) -> Option<Self>
pub const fn checked_rem_euclid(self, rhs: i16) -> 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: i16) -> Self
pub const unsafe fn unchecked_rem_euclid(self, rhs: i16) -> 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: i16) -> Self
pub const fn saturating_add(self, rhs: i16) -> Self
Saturating integer addition. Computes self + rhs
, saturating at the numeric
bounds.
Sourcepub const fn saturating_sub(self, rhs: i16) -> Self
pub const fn saturating_sub(self, rhs: i16) -> 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: i16) -> Self
pub const fn saturating_mul(self, rhs: i16) -> 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: i16) -> Self
pub const fn wrapping_add(self, rhs: i16) -> Self
Wrapping integer addition. Computes self + rhs
, wrapping around the numeric
bounds.
Sourcepub const fn wrapping_sub(self, rhs: i16) -> Self
pub const fn wrapping_sub(self, rhs: i16) -> Self
Wrapping integer subtraction. Computes self - rhs
, wrapping around the numeric
bounds.
Trait Implementations§
Source§impl<const MIN: i16, const MAX: i16> Ord for RangedI16<MIN, MAX>
impl<const MIN: i16, const MAX: i16> Ord for RangedI16<MIN, MAX>
1.21.0 · Source§fn max(self, other: Self) -> Selfwhere
Self: Sized,
fn max(self, other: Self) -> Selfwhere
Self: Sized,
Source§impl<const MIN_A: i16, const MAX_A: i16, const MIN_B: i16, const MAX_B: i16> PartialEq<RangedI16<MIN_B, MAX_B>> for RangedI16<MIN_A, MAX_A>
impl<const MIN_A: i16, const MAX_A: i16, const MIN_B: i16, const MAX_B: i16> PartialEq<RangedI16<MIN_B, MAX_B>> for RangedI16<MIN_A, MAX_A>
Source§impl<const MIN_A: i16, const MAX_A: i16, const MIN_B: i16, const MAX_B: i16> PartialOrd<RangedI16<MIN_B, MAX_B>> for RangedI16<MIN_A, MAX_A>
impl<const MIN_A: i16, const MAX_A: i16, const MIN_B: i16, const MAX_B: i16> PartialOrd<RangedI16<MIN_B, MAX_B>> for RangedI16<MIN_A, MAX_A>
Source§impl<const MIN: i16, const MAX: i16> SmartDisplay for RangedI16<MIN, MAX>
impl<const MIN: i16, const MAX: i16> SmartDisplay for RangedI16<MIN, MAX>
Source§fn metadata(&self, f: FormatterOptions) -> Metadata<'_, Self>
fn metadata(&self, f: FormatterOptions) -> Metadata<'_, Self>
impl<const MIN: i16, const MAX: i16> Copy for RangedI16<MIN, MAX>
impl<const MIN: i16, const MAX: i16> Eq for RangedI16<MIN, MAX>
Auto Trait Implementations§
impl<const MIN: i16, const MAX: i16> Freeze for RangedI16<MIN, MAX>
impl<const MIN: i16, const MAX: i16> RefUnwindSafe for RangedI16<MIN, MAX>
impl<const MIN: i16, const MAX: i16> Send for RangedI16<MIN, MAX>
impl<const MIN: i16, const MAX: i16> Sync for RangedI16<MIN, MAX>
impl<const MIN: i16, const MAX: i16> Unpin for RangedI16<MIN, MAX>
impl<const MIN: i16, const MAX: i16> UnwindSafe for RangedI16<MIN, MAX>
Blanket Implementations§
Source§impl<T> BorrowMut<T> for Twhere
T: ?Sized,
impl<T> BorrowMut<T> for Twhere
T: ?Sized,
Source§fn borrow_mut(&mut self) -> &mut T
fn borrow_mut(&mut self) -> &mut T
Source§impl<T> CloneToUninit for Twhere
T: Clone,
impl<T> CloneToUninit for Twhere
T: Clone,
Layout§
Note: Most layout information is completely unstable and may even differ between compilations. The only exception is types with certain repr(...)
attributes. Please see the Rust Reference's “Type Layout” chapter for details on type layout guarantees.
Size: 2 bytes