Trait NonZeroAble

Source
pub trait NonZeroAble {
    type NonZero: NonZero;

    // Required methods
    fn as_nonzero(self) -> Option<Self::NonZero>;
    unsafe fn as_nonzero_unchecked(self) -> Self::NonZero;
}
Expand description

A trait identifying integral types that have a non-zeroable equivalent.

Required Associated Types§

Source

type NonZero: NonZero

The concrete non-zero type represented by an implementation of this trait. For example, for u8’s implementation, it is NonZeroU8.

Required Methods§

Source

fn as_nonzero(self) -> Option<Self::NonZero>

Converts the integer to its non-zero equivalent.

§Examples
§Trying to convert zero
let n: u16 = 0;
assert_eq!(n.as_nonzero(), None);
§Converting a non-zero value
let n: usize = 20;
let non0n: NonZeroUsize = n.as_nonzero().expect("should result in a converted value");
assert_eq!(non0n.get(), 20);
Source

unsafe fn as_nonzero_unchecked(self) -> Self::NonZero

Converts the integer to its non-zero equivalent without checking for zeroness.

This corresponds to the new_unchecked function on the corresponding NonZero type.

Implementations on Foreign Types§

Source§

impl NonZeroAble for u8

Source§

impl NonZeroAble for u16

Source§

impl NonZeroAble for u32

Source§

impl NonZeroAble for u64

Source§

impl NonZeroAble for u128

Source§

impl NonZeroAble for usize

Implementors§