Struct core::num::NonZeroU128
1.28.0 · source · #[repr(transparent)]pub struct NonZeroU128(_);
Expand description
已知不等于零的整数。
这样可以进行一些内存布局优化。
For example, Option<NonZeroU128>
is the same size as u128
:
use std::mem::size_of;
assert_eq!(size_of::<Option<core::num::NonZeroU128>>(), size_of::<u128>());
RunLayout
NonZeroU128
is guaranteed to have the same layout and bit validity as u128
除了 0
不是有效实例。
Option<NonZeroU128>
is guaranteed to be compatible with u128
,
包括在 FFI 中。
Implementations§
source§impl NonZeroU128
impl NonZeroU128
source§impl NonZeroU128
impl NonZeroU128
1.53.0 (const: 1.53.0) · sourcepub const fn leading_zeros(self) -> u32
pub const fn leading_zeros(self) -> u32
1.53.0 (const: 1.53.0) · sourcepub const fn trailing_zeros(self) -> u32
pub const fn trailing_zeros(self) -> u32
source§impl NonZeroU128
impl NonZeroU128
1.64.0 (const: 1.64.0) · sourcepub const fn checked_add(self, other: u128) -> Option<NonZeroU128>
pub const fn checked_add(self, other: u128) -> Option<NonZeroU128>
1.64.0 (const: 1.64.0) · sourcepub const fn saturating_add(self, other: u128) -> NonZeroU128
pub const fn saturating_add(self, other: u128) -> NonZeroU128
sourcepub const unsafe fn unchecked_add(self, other: u128) -> NonZeroU128
🔬This is a nightly-only experimental API. (nonzero_ops
#84186)
pub const unsafe fn unchecked_add(self, other: u128) -> NonZeroU128
nonzero_ops
#84186)1.64.0 (const: 1.64.0) · sourcepub const fn checked_next_power_of_two(self) -> Option<NonZeroU128>
pub const fn checked_next_power_of_two(self) -> Option<NonZeroU128>
返回大于或等于的最小二乘方 n.
如果下一个 2 的幂大于类型的最大值,则检查溢出并返回 None
。
因此,结果不能归零。
Examples
let two = NonZeroU128::new(2)?;
let three = NonZeroU128::new(3)?;
let four = NonZeroU128::new(4)?;
let max = NonZeroU128::new(u128::MAX)?;
assert_eq!(Some(two), two.checked_next_power_of_two() );
assert_eq!(Some(four), three.checked_next_power_of_two() );
assert_eq!(None, max.checked_next_power_of_two() );
Run1.67.0 (const: 1.67.0) · sourcepub const fn ilog2(self) -> u32
pub const fn ilog2(self) -> u32
返回数字的以 2 为底的对数,向下取整。
这是相同的操作
u128::ilog2
,
除了它没有需要担心的失败案例,因为这个值永远不会为零。
Examples
assert_eq!(NonZeroU128::new(7).unwrap().ilog2(), 2);
assert_eq!(NonZeroU128::new(8).unwrap().ilog2(), 3);
assert_eq!(NonZeroU128::new(9).unwrap().ilog2(), 3);
Run1.67.0 (const: 1.67.0) · sourcepub const fn ilog10(self) -> u32
pub const fn ilog10(self) -> u32
返回数字的以 10 为底的对数,向下取整。
这是相同的操作
u128::ilog10
,
除了它没有需要担心的失败案例,因为这个值永远不会为零。
Examples
assert_eq!(NonZeroU128::new(99).unwrap().ilog10(), 1);
assert_eq!(NonZeroU128::new(100).unwrap().ilog10(), 2);
assert_eq!(NonZeroU128::new(101).unwrap().ilog10(), 2);
Runconst: unstable · sourcepub fn midpoint(self, rhs: Self) -> Self
🔬This is a nightly-only experimental API. (num_midpoint
#110840)
pub fn midpoint(self, rhs: Self) -> Self
num_midpoint
#110840)计算 self
和 rhs
的中点。
midpoint(a, b)
是 (a + b) >> 1
,就好像它是在足够大的带符号整数类型中执行的一样。
这意味着结果总是向 negative 无穷大舍入,并且永远不会发生溢出。
Examples
#![feature(num_midpoint)]
let one = NonZeroU128::new(1)?;
let two = NonZeroU128::new(2)?;
let four = NonZeroU128::new(4)?;
assert_eq!(one.midpoint(four), two);
assert_eq!(four.midpoint(one), two);
Runsource§impl NonZeroU128
impl NonZeroU128
1.64.0 (const: 1.64.0) · sourcepub const fn checked_mul(self, other: NonZeroU128) -> Option<NonZeroU128>
pub const fn checked_mul(self, other: NonZeroU128) -> Option<NonZeroU128>
1.64.0 (const: 1.64.0) · sourcepub const fn saturating_mul(self, other: NonZeroU128) -> NonZeroU128
pub const fn saturating_mul(self, other: NonZeroU128) -> NonZeroU128
sourcepub const unsafe fn unchecked_mul(self, other: NonZeroU128) -> NonZeroU128
🔬This is a nightly-only experimental API. (nonzero_ops
#84186)
pub const unsafe fn unchecked_mul(self, other: NonZeroU128) -> NonZeroU128
nonzero_ops
#84186)1.64.0 (const: 1.64.0) · sourcepub const fn checked_pow(self, other: u32) -> Option<NonZeroU128>
pub const fn checked_pow(self, other: u32) -> Option<NonZeroU128>
1.64.0 (const: 1.64.0) · sourcepub const fn saturating_pow(self, other: u32) -> NonZeroU128
pub const fn saturating_pow(self, other: u32) -> NonZeroU128
source§impl NonZeroU128
impl NonZeroU128
1.59.0 (const: 1.59.0) · sourcepub const fn is_power_of_two(self) -> bool
pub const fn is_power_of_two(self) -> bool
source§impl NonZeroU128
impl NonZeroU128
source§impl NonZeroU128
impl NonZeroU128
Trait Implementations§
source§impl Binary for NonZeroU128
impl Binary for NonZeroU128
1.45.0 · source§impl BitOr<NonZeroU128> for NonZeroU128
impl BitOr<NonZeroU128> for NonZeroU128
1.45.0 · source§impl BitOr<NonZeroU128> for u128
impl BitOr<NonZeroU128> for u128
§type Output = NonZeroU128
type Output = NonZeroU128
|
运算符后的结果类型。1.45.0 · source§impl BitOr<u128> for NonZeroU128
impl BitOr<u128> for NonZeroU128
1.45.0 · source§impl BitOrAssign<NonZeroU128> for NonZeroU128
impl BitOrAssign<NonZeroU128> for NonZeroU128
source§fn bitor_assign(&mut self, rhs: Self)
fn bitor_assign(&mut self, rhs: Self)
|=
操作。 Read more1.45.0 · source§impl BitOrAssign<u128> for NonZeroU128
impl BitOrAssign<u128> for NonZeroU128
source§fn bitor_assign(&mut self, rhs: u128)
fn bitor_assign(&mut self, rhs: u128)
|=
操作。 Read moresource§impl Clone for NonZeroU128
impl Clone for NonZeroU128
source§fn clone(&self) -> NonZeroU128
fn clone(&self) -> NonZeroU128
1.0.0 · source§fn clone_from(&mut self, source: &Self)
fn clone_from(&mut self, source: &Self)
source
执行复制分配。 Read moresource§impl Debug for NonZeroU128
impl Debug for NonZeroU128
source§impl Display for NonZeroU128
impl Display for NonZeroU128
1.51.0 · source§impl Div<NonZeroU128> for u128
impl Div<NonZeroU128> for u128
1.31.0 · source§impl From<NonZeroU128> for u128
impl From<NonZeroU128> for u128
source§fn from(nonzero: NonZeroU128) -> Self
fn from(nonzero: NonZeroU128) -> Self
Converts a NonZeroU128
into an u128
1.41.0 · source§impl From<NonZeroU16> for NonZeroU128
impl From<NonZeroU16> for NonZeroU128
source§fn from(small: NonZeroU16) -> Self
fn from(small: NonZeroU16) -> Self
Converts NonZeroU16
to NonZeroU128
losslessly.
1.41.0 · source§impl From<NonZeroU32> for NonZeroU128
impl From<NonZeroU32> for NonZeroU128
source§fn from(small: NonZeroU32) -> Self
fn from(small: NonZeroU32) -> Self
Converts NonZeroU32
to NonZeroU128
losslessly.
1.41.0 · source§impl From<NonZeroU64> for NonZeroU128
impl From<NonZeroU64> for NonZeroU128
source§fn from(small: NonZeroU64) -> Self
fn from(small: NonZeroU64) -> Self
Converts NonZeroU64
to NonZeroU128
losslessly.
1.41.0 · source§impl From<NonZeroU8> for NonZeroU128
impl From<NonZeroU8> for NonZeroU128
1.35.0 · source§impl FromStr for NonZeroU128
impl FromStr for NonZeroU128
source§impl Hash for NonZeroU128
impl Hash for NonZeroU128
source§impl LowerHex for NonZeroU128
impl LowerHex for NonZeroU128
source§impl Octal for NonZeroU128
impl Octal for NonZeroU128
source§impl Ord for NonZeroU128
impl Ord for NonZeroU128
source§impl PartialEq<NonZeroU128> for NonZeroU128
impl PartialEq<NonZeroU128> for NonZeroU128
source§impl PartialOrd<NonZeroU128> for NonZeroU128
impl PartialOrd<NonZeroU128> for NonZeroU128
1.51.0 · source§impl Rem<NonZeroU128> for u128
impl Rem<NonZeroU128> for u128
1.49.0 · source§impl TryFrom<NonZeroI128> for NonZeroU128
impl TryFrom<NonZeroI128> for NonZeroU128
source§fn try_from(value: NonZeroI128) -> Result<Self, Self::Error>
fn try_from(value: NonZeroI128) -> Result<Self, Self::Error>
Attempts to convert NonZeroI128
to NonZeroU128
.
§type Error = TryFromIntError
type Error = TryFromIntError
1.49.0 · source§impl TryFrom<NonZeroI16> for NonZeroU128
impl TryFrom<NonZeroI16> for NonZeroU128
source§fn try_from(value: NonZeroI16) -> Result<Self, Self::Error>
fn try_from(value: NonZeroI16) -> Result<Self, Self::Error>
Attempts to convert NonZeroI16
to NonZeroU128
.
§type Error = TryFromIntError
type Error = TryFromIntError
1.49.0 · source§impl TryFrom<NonZeroI32> for NonZeroU128
impl TryFrom<NonZeroI32> for NonZeroU128
source§fn try_from(value: NonZeroI32) -> Result<Self, Self::Error>
fn try_from(value: NonZeroI32) -> Result<Self, Self::Error>
Attempts to convert NonZeroI32
to NonZeroU128
.
§type Error = TryFromIntError
type Error = TryFromIntError
1.49.0 · source§impl TryFrom<NonZeroI64> for NonZeroU128
impl TryFrom<NonZeroI64> for NonZeroU128
source§fn try_from(value: NonZeroI64) -> Result<Self, Self::Error>
fn try_from(value: NonZeroI64) -> Result<Self, Self::Error>
Attempts to convert NonZeroI64
to NonZeroU128
.
§type Error = TryFromIntError
type Error = TryFromIntError
1.49.0 · source§impl TryFrom<NonZeroI8> for NonZeroU128
impl TryFrom<NonZeroI8> for NonZeroU128
1.49.0 · source§impl TryFrom<NonZeroIsize> for NonZeroU128
impl TryFrom<NonZeroIsize> for NonZeroU128
source§fn try_from(value: NonZeroIsize) -> Result<Self, Self::Error>
fn try_from(value: NonZeroIsize) -> Result<Self, Self::Error>
Attempts to convert NonZeroIsize
to NonZeroU128
.
§type Error = TryFromIntError
type Error = TryFromIntError
1.49.0 · source§impl TryFrom<NonZeroU128> for NonZeroI128
impl TryFrom<NonZeroU128> for NonZeroI128
source§fn try_from(value: NonZeroU128) -> Result<Self, Self::Error>
fn try_from(value: NonZeroU128) -> Result<Self, Self::Error>
Attempts to convert NonZeroU128
to NonZeroI128
.
§type Error = TryFromIntError
type Error = TryFromIntError
1.49.0 · source§impl TryFrom<NonZeroU128> for NonZeroI16
impl TryFrom<NonZeroU128> for NonZeroI16
source§fn try_from(value: NonZeroU128) -> Result<Self, Self::Error>
fn try_from(value: NonZeroU128) -> Result<Self, Self::Error>
Attempts to convert NonZeroU128
to NonZeroI16
.
§type Error = TryFromIntError
type Error = TryFromIntError
1.49.0 · source§impl TryFrom<NonZeroU128> for NonZeroI32
impl TryFrom<NonZeroU128> for NonZeroI32
source§fn try_from(value: NonZeroU128) -> Result<Self, Self::Error>
fn try_from(value: NonZeroU128) -> Result<Self, Self::Error>
Attempts to convert NonZeroU128
to NonZeroI32
.
§type Error = TryFromIntError
type Error = TryFromIntError
1.49.0 · source§impl TryFrom<NonZeroU128> for NonZeroI64
impl TryFrom<NonZeroU128> for NonZeroI64
source§fn try_from(value: NonZeroU128) -> Result<Self, Self::Error>
fn try_from(value: NonZeroU128) -> Result<Self, Self::Error>
Attempts to convert NonZeroU128
to NonZeroI64
.
§type Error = TryFromIntError
type Error = TryFromIntError
1.49.0 · source§impl TryFrom<NonZeroU128> for NonZeroI8
impl TryFrom<NonZeroU128> for NonZeroI8
source§fn try_from(value: NonZeroU128) -> Result<Self, Self::Error>
fn try_from(value: NonZeroU128) -> Result<Self, Self::Error>
Attempts to convert NonZeroU128
to NonZeroI8
.
§type Error = TryFromIntError
type Error = TryFromIntError
1.49.0 · source§impl TryFrom<NonZeroU128> for NonZeroIsize
impl TryFrom<NonZeroU128> for NonZeroIsize
source§fn try_from(value: NonZeroU128) -> Result<Self, Self::Error>
fn try_from(value: NonZeroU128) -> Result<Self, Self::Error>
Attempts to convert NonZeroU128
to NonZeroIsize
.
§type Error = TryFromIntError
type Error = TryFromIntError
1.49.0 · source§impl TryFrom<NonZeroU128> for NonZeroU16
impl TryFrom<NonZeroU128> for NonZeroU16
source§fn try_from(value: NonZeroU128) -> Result<Self, Self::Error>
fn try_from(value: NonZeroU128) -> Result<Self, Self::Error>
Attempts to convert NonZeroU128
to NonZeroU16
.
§type Error = TryFromIntError
type Error = TryFromIntError
1.49.0 · source§impl TryFrom<NonZeroU128> for NonZeroU32
impl TryFrom<NonZeroU128> for NonZeroU32
source§fn try_from(value: NonZeroU128) -> Result<Self, Self::Error>
fn try_from(value: NonZeroU128) -> Result<Self, Self::Error>
Attempts to convert NonZeroU128
to NonZeroU32
.
§type Error = TryFromIntError
type Error = TryFromIntError
1.49.0 · source§impl TryFrom<NonZeroU128> for NonZeroU64
impl TryFrom<NonZeroU128> for NonZeroU64
source§fn try_from(value: NonZeroU128) -> Result<Self, Self::Error>
fn try_from(value: NonZeroU128) -> Result<Self, Self::Error>
Attempts to convert NonZeroU128
to NonZeroU64
.
§type Error = TryFromIntError
type Error = TryFromIntError
1.49.0 · source§impl TryFrom<NonZeroU128> for NonZeroU8
impl TryFrom<NonZeroU128> for NonZeroU8
source§fn try_from(value: NonZeroU128) -> Result<Self, Self::Error>
fn try_from(value: NonZeroU128) -> Result<Self, Self::Error>
Attempts to convert NonZeroU128
to NonZeroU8
.
§type Error = TryFromIntError
type Error = TryFromIntError
1.49.0 · source§impl TryFrom<NonZeroU128> for NonZeroUsize
impl TryFrom<NonZeroU128> for NonZeroUsize
source§fn try_from(value: NonZeroU128) -> Result<Self, Self::Error>
fn try_from(value: NonZeroU128) -> Result<Self, Self::Error>
Attempts to convert NonZeroU128
to NonZeroUsize
.
§type Error = TryFromIntError
type Error = TryFromIntError
1.49.0 · source§impl TryFrom<NonZeroUsize> for NonZeroU128
impl TryFrom<NonZeroUsize> for NonZeroU128
source§fn try_from(value: NonZeroUsize) -> Result<Self, Self::Error>
fn try_from(value: NonZeroUsize) -> Result<Self, Self::Error>
Attempts to convert NonZeroUsize
to NonZeroU128
.