pub struct NonMaxUsize(/* private fields */);
Expand description
A usize
that can never be usize::MAX
.
This is similar to core::num::NonZeroUsize
, but instead of not permitting
a zero value, this does not permit a max value.
This is useful in certain contexts where one wants to optimize the memory
usage of things that contain match offsets. Namely, since Rust slices
are guaranteed to never have a length exceeding isize::MAX
, we can use
usize::MAX
as a sentinel to indicate that no match was found. Indeed,
types like Option<NonMaxUsize>
have exactly the same size in memory as a
usize
.
This type is defined to be repr(transparent)
for
core::num::NonZeroUsize
, which is in turn defined to be
repr(transparent)
for usize
.
Implementations§
Source§impl NonMaxUsize
impl NonMaxUsize
Trait Implementations§
Source§impl Clone for NonMaxUsize
impl Clone for NonMaxUsize
Source§fn clone(&self) -> NonMaxUsize
fn clone(&self) -> NonMaxUsize
1.0.0 · Source§fn clone_from(&mut self, source: &Self)
fn clone_from(&mut self, source: &Self)
source
. Read moreSource§impl Debug for NonMaxUsize
impl Debug for NonMaxUsize
Source§impl Hash for NonMaxUsize
impl Hash for NonMaxUsize
Source§impl Ord for NonMaxUsize
impl Ord for NonMaxUsize
Source§fn cmp(&self, other: &NonMaxUsize) -> Ordering
fn cmp(&self, other: &NonMaxUsize) -> Ordering
1.21.0 · Source§fn max(self, other: Self) -> Selfwhere
Self: Sized,
fn max(self, other: Self) -> Selfwhere
Self: Sized,
Source§impl PartialEq for NonMaxUsize
impl PartialEq for NonMaxUsize
Source§impl PartialOrd for NonMaxUsize
impl PartialOrd for NonMaxUsize
impl Copy for NonMaxUsize
impl Eq for NonMaxUsize
impl StructuralPartialEq for NonMaxUsize
Auto Trait Implementations§
impl Freeze for NonMaxUsize
impl RefUnwindSafe for NonMaxUsize
impl Send for NonMaxUsize
impl Sync for NonMaxUsize
impl Unpin for NonMaxUsize
impl UnwindSafe for NonMaxUsize
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: 8 bytes