Struct deranged::OptionRangedI64
source · #[repr(transparent)]pub struct OptionRangedI64<const MIN: i64, const MAX: i64>(pub(crate) i64);
Expand description
A RangedI64
that is optional. Equivalent to Option<RangedI64>
with niche value optimization.
If MIN
is i64::MIN
and MAX
is i64::MAX
then compilation will fail. This is because there is no way to represent the niche value.
This type is useful when you need to store an optional ranged value in a struct, but
do not want the overhead of an Option
type. This reduces the size of the struct
overall, and is particularly useful when you have a large number of optional fields.
Note that most operations must still be performed on the Option
type, which is
obtained with OptionRangedI64::get
.
Tuple Fields§
§0: i64
Implementations§
source§impl<const MIN: i64, const MAX: i64> OptionRangedI64<MIN, MAX>
impl<const MIN: i64, const MAX: i64> OptionRangedI64<MIN, MAX>
sourcepub(crate) const NICHE: i64 = _
pub(crate) const NICHE: i64 = _
The value used as the niche. Must not be in the range MIN..=MAX
.
sourcepub const fn Some(value: RangedI64<MIN, MAX>) -> Self
pub const fn Some(value: RangedI64<MIN, MAX>) -> Self
Creates an optional ranged value that is present.
sourcepub const fn get(self) -> Option<RangedI64<MIN, MAX>>
pub const fn get(self) -> Option<RangedI64<MIN, MAX>>
Returns the value as the standard library’s Option
type.
sourcepub const unsafe fn some_unchecked(value: i64) -> Self
pub const unsafe fn some_unchecked(value: i64) -> Self
Creates an optional ranged integer without checking the value.
§Safety
The value must be within the range MIN..=MAX
. As the value used for niche
value optimization is unspecified, the provided value must not be the niche
value.
sourcepub(crate) const fn inner(self) -> i64
pub(crate) const fn inner(self) -> i64
Obtain the inner value of the struct. This is useful for comparisons.
pub const fn get_primitive(self) -> Option<i64>
Trait Implementations§
source§impl<const MIN: i64, const MAX: i64> Clone for OptionRangedI64<MIN, MAX>
impl<const MIN: i64, const MAX: i64> Clone for OptionRangedI64<MIN, MAX>
source§fn clone(&self) -> OptionRangedI64<MIN, MAX>
fn clone(&self) -> OptionRangedI64<MIN, MAX>
1.0.0 · source§fn clone_from(&mut self, source: &Self)
fn clone_from(&mut self, source: &Self)
source
. Read moresource§impl<'de, const MIN: i64, const MAX: i64> Deserialize<'de> for OptionRangedI64<MIN, MAX>
impl<'de, const MIN: i64, const MAX: i64> Deserialize<'de> for OptionRangedI64<MIN, MAX>
source§fn deserialize<D: Deserializer<'de>>(deserializer: D) -> Result<Self, D::Error>
fn deserialize<D: Deserializer<'de>>(deserializer: D) -> Result<Self, D::Error>
source§impl<const MIN: i64, const MAX: i64> From<Option<RangedI64<MIN, MAX>>> for OptionRangedI64<MIN, MAX>
impl<const MIN: i64, const MAX: i64> From<Option<RangedI64<MIN, MAX>>> for OptionRangedI64<MIN, MAX>
source§impl<const MIN: i64, const MAX: i64> From<OptionRangedI64<MIN, MAX>> for Option<RangedI64<MIN, MAX>>
impl<const MIN: i64, const MAX: i64> From<OptionRangedI64<MIN, MAX>> for Option<RangedI64<MIN, MAX>>
source§fn from(value: OptionRangedI64<MIN, MAX>) -> Self
fn from(value: OptionRangedI64<MIN, MAX>) -> Self
source§impl<const MIN: i64, const MAX: i64> Ord for OptionRangedI64<MIN, MAX>
impl<const MIN: i64, const MAX: i64> Ord for OptionRangedI64<MIN, MAX>
source§impl<const MIN_A: i64, const MAX_A: i64, const MIN_B: i64, const MAX_B: i64> PartialEq<OptionRangedI64<MIN_B, MAX_B>> for OptionRangedI64<MIN_A, MAX_A>
impl<const MIN_A: i64, const MAX_A: i64, const MIN_B: i64, const MAX_B: i64> PartialEq<OptionRangedI64<MIN_B, MAX_B>> for OptionRangedI64<MIN_A, MAX_A>
source§fn eq(&self, other: &OptionRangedI64<MIN_B, MAX_B>) -> bool
fn eq(&self, other: &OptionRangedI64<MIN_B, MAX_B>) -> bool
self
and other
values to be equal, and is used by ==
.source§impl<const MIN_A: i64, const MAX_A: i64, const MIN_B: i64, const MAX_B: i64> PartialOrd<OptionRangedI64<MIN_B, MAX_B>> for OptionRangedI64<MIN_A, MAX_A>
impl<const MIN_A: i64, const MAX_A: i64, const MIN_B: i64, const MAX_B: i64> PartialOrd<OptionRangedI64<MIN_B, MAX_B>> for OptionRangedI64<MIN_A, MAX_A>
impl<const MIN: i64, const MAX: i64> Copy for OptionRangedI64<MIN, MAX>
impl<const MIN: i64, const MAX: i64> Eq for OptionRangedI64<MIN, MAX>
Auto Trait Implementations§
impl<const MIN: i64, const MAX: i64> Freeze for OptionRangedI64<MIN, MAX>
impl<const MIN: i64, const MAX: i64> RefUnwindSafe for OptionRangedI64<MIN, MAX>
impl<const MIN: i64, const MAX: i64> Send for OptionRangedI64<MIN, MAX>
impl<const MIN: i64, const MAX: i64> Sync for OptionRangedI64<MIN, MAX>
impl<const MIN: i64, const MAX: i64> Unpin for OptionRangedI64<MIN, MAX>
impl<const MIN: i64, const MAX: i64> UnwindSafe for OptionRangedI64<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,
source§unsafe fn clone_to_uninit(&self, dst: *mut T)
unsafe fn clone_to_uninit(&self, dst: *mut T)
clone_to_uninit
)