Struct naga::non_max_u32::NonMaxU32

source ·
pub struct NonMaxU32(NonZeroU32);
Expand description

An unsigned 32-bit value known not to be u32::MAX.

A NonMaxU32 value can represent any value in the range 0 .. u32::MAX - 1, and an Option<NonMaxU32> is still a 32-bit value. In other words, NonMaxU32 is just like NonZeroU32, except that a different value is missing from the full u32 range.

Since zero is a very useful value in indexing, NonMaxU32 is more useful for representing indices than NonZeroU32.

NonMaxU32 values and Option<NonMaxU32> values both occupy 32 bits.

§Serialization and Deserialization

When the appropriate Cargo features are enabled, NonMaxU32 implements serde::Serialize and serde::Deserialize in the natural way, as the integer value it represents. For example, serializing NonMaxU32::new(0).unwrap() as JSON or RON yields the string "0". This is the case despite NonMaxU32’s implementation, described below.

§Implementation

Although this should not be observable to its users, a NonMaxU32 whose value is n is a newtype around a NonZeroU32 whose value is n + 1. This way, the range of values that NonMaxU32 can represent, `0..=u32::MAX

  • 1, is mapped to the range 1..=u32::MAX, which is the range that [NonZeroU32] can represent. (And conversely, since [u32] addition wraps around, the value unrepresentable in NonMaxU32, [u32::MAX], becomes the value unrepresentable in [NonZeroU32], 0`.)

Tuple Fields§

§0: NonZeroU32

Implementations§

source§

impl NonMaxU32

source

pub const fn new(n: u32) -> Option<Self>

Construct a NonMaxU32 whose value is n, if possible.

source

pub const fn get(self) -> u32

Return the value of self as a u32.

source

pub const unsafe fn new_unchecked(n: u32) -> NonMaxU32

Construct a NonMaxU32 whose value is n.

§Safety

The value of n must not be u32::MAX.

source

pub const unsafe fn from_usize_unchecked(index: usize) -> Self

Construct a NonMaxU32 whose value is index.

§Safety
  • The value of index must be strictly less than u32::MAX.
source

pub fn checked_add(self, n: u32) -> Option<Self>

Trait Implementations§

source§

impl Clone for NonMaxU32

source§

fn clone(&self) -> NonMaxU32

Returns a copy of the value. Read more
1.0.0 · source§

fn clone_from(&mut self, source: &Self)

Performs copy-assignment from source. Read more
source§

impl Debug for NonMaxU32

source§

fn fmt(&self, f: &mut Formatter<'_>) -> Result

Formats the value using the given formatter. Read more
source§

impl<'de> Deserialize<'de> for NonMaxU32

source§

fn deserialize<D>(deserializer: D) -> Result<Self, D::Error>
where D: Deserializer<'de>,

Deserialize this value from the given Serde deserializer. Read more
source§

impl Display for NonMaxU32

source§

fn fmt(&self, f: &mut Formatter<'_>) -> Result

Formats the value using the given formatter. Read more
source§

impl Hash for NonMaxU32

source§

fn hash<__H: Hasher>(&self, state: &mut __H)

Feeds this value into the given Hasher. Read more
1.3.0 · source§

fn hash_slice<H>(data: &[Self], state: &mut H)
where H: Hasher, Self: Sized,

Feeds a slice of this type into the given Hasher. Read more
source§

impl Ord for NonMaxU32

source§

fn cmp(&self, other: &NonMaxU32) -> Ordering

This method returns an Ordering between self and other. Read more
1.21.0 · source§

fn max(self, other: Self) -> Self
where Self: Sized,

Compares and returns the maximum of two values. Read more
1.21.0 · source§

fn min(self, other: Self) -> Self
where Self: Sized,

Compares and returns the minimum of two values. Read more
1.50.0 · source§

fn clamp(self, min: Self, max: Self) -> Self
where Self: Sized + PartialOrd,

Restrict a value to a certain interval. Read more
source§

impl PartialEq for NonMaxU32

source§

fn eq(&self, other: &NonMaxU32) -> bool

This method tests for self and other values to be equal, and is used by ==.
1.0.0 · source§

fn ne(&self, other: &Rhs) -> bool

This method tests for !=. The default implementation is almost always sufficient, and should not be overridden without very good reason.
source§

impl PartialOrd for NonMaxU32

source§

fn partial_cmp(&self, other: &NonMaxU32) -> Option<Ordering>

This method returns an ordering between self and other values if one exists. Read more
1.0.0 · source§

fn lt(&self, other: &Rhs) -> bool

This method tests less than (for self and other) and is used by the < operator. Read more
1.0.0 · source§

fn le(&self, other: &Rhs) -> bool

This method tests less than or equal to (for self and other) and is used by the <= operator. Read more
1.0.0 · source§

fn gt(&self, other: &Rhs) -> bool

This method tests greater than (for self and other) and is used by the > operator. Read more
1.0.0 · source§

fn ge(&self, other: &Rhs) -> bool

This method tests greater than or equal to (for self and other) and is used by the >= operator. Read more
source§

impl Serialize for NonMaxU32

source§

fn serialize<S>(&self, serializer: S) -> Result<S::Ok, S::Error>
where S: Serializer,

Serialize this value into the given Serde serializer. Read more
source§

impl Copy for NonMaxU32

source§

impl Eq for NonMaxU32

source§

impl StructuralPartialEq for NonMaxU32

Auto Trait Implementations§

Blanket Implementations§

source§

impl<T> Any for T
where T: 'static + ?Sized,

source§

fn type_id(&self) -> TypeId

Gets the TypeId of self. Read more
source§

impl<T> Borrow<T> for T
where T: ?Sized,

source§

fn borrow(&self) -> &T

Immutably borrows from an owned value. Read more
source§

impl<T> BorrowMut<T> for T
where T: ?Sized,

source§

fn borrow_mut(&mut self) -> &mut T

Mutably borrows from an owned value. Read more
source§

impl<Q, K> Comparable<K> for Q
where Q: Ord + ?Sized, K: Borrow<Q> + ?Sized,

source§

fn compare(&self, key: &K) -> Ordering

Compare self to key and return their ordering.
source§

impl<Q, K> Equivalent<K> for Q
where Q: Eq + ?Sized, K: Borrow<Q> + ?Sized,

source§

fn equivalent(&self, key: &K) -> bool

Checks if this value is equivalent to the given key. Read more
source§

impl<Q, K> Equivalent<K> for Q
where Q: Eq + ?Sized, K: Borrow<Q> + ?Sized,

source§

fn equivalent(&self, key: &K) -> bool

Compare self to key and return true if they are equal.
source§

impl<T> From<T> for T

source§

fn from(t: T) -> T

Returns the argument unchanged.

source§

impl<T, U> Into<U> for T
where U: From<T>,

source§

fn into(self) -> U

Calls U::from(self).

That is, this conversion is whatever the implementation of From<T> for U chooses to do.

source§

impl<T> ToOwned for T
where T: Clone,

§

type Owned = T

The resulting type after obtaining ownership.
source§

fn to_owned(&self) -> T

Creates owned data from borrowed data, usually by cloning. Read more
source§

fn clone_into(&self, target: &mut T)

Uses borrowed data to replace owned data, usually by cloning. Read more
source§

impl<T> ToString for T
where T: Display + ?Sized,

source§

default fn to_string(&self) -> String

Converts the given value to a String. Read more
source§

impl<T, U> TryFrom<U> for T
where U: Into<T>,

§

type Error = Infallible

The type returned in the event of a conversion error.
source§

fn try_from(value: U) -> Result<T, <T as TryFrom<U>>::Error>

Performs the conversion.
source§

impl<T, U> TryInto<U> for T
where U: TryFrom<T>,

§

type Error = <U as TryFrom<T>>::Error

The type returned in the event of a conversion error.
source§

fn try_into(self) -> Result<U, <U as TryFrom<T>>::Error>

Performs the conversion.
source§

impl<T> DeserializeOwned for T
where T: for<'de> Deserialize<'de>,