pub struct NonMinI64 { /* private fields */ }Expand description
An integer of type i64 which is known to not equal i64::MIN.
This type allows for niche filling optimization (similar to the existing std::num::NonZero* types)
meaning items such as Option<NonMinI64> and Result<NonMinI64, ()> take up the same
amount of space as i64.
// Create using `new`, extract value using `get`
let x = NonMinI64::new(123).unwrap();
assert_eq!(x.get(), 123);
// The value cannot be `i64::MIN`
let y = NonMinI64::new(i64::MIN);
assert_eq!(y, None);
// Niche filling optimization works!
use std::mem::size_of;
assert_eq!(size_of::<i64>(), size_of::<NonMinI64>());
assert_eq!(size_of::<i64>(), size_of::<Option<NonMinI64>>());Implementations§
Source§impl NonMinI64
impl NonMinI64
Trait Implementations§
Source§impl Ord for NonMinI64
impl Ord for NonMinI64
Source§impl PartialOrd for NonMinI64
impl PartialOrd for NonMinI64
impl Copy for NonMinI64
impl Eq for NonMinI64
impl StructuralPartialEq for NonMinI64
Auto Trait Implementations§
impl Freeze for NonMinI64
impl RefUnwindSafe for NonMinI64
impl Send for NonMinI64
impl Sync for NonMinI64
impl Unpin for NonMinI64
impl UnsafeUnpin for NonMinI64
impl UnwindSafe for NonMinI64
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
Mutably borrows from an owned value. Read more