Expand description
§nz
The nz
crate provides a collection of macros that simplify the creation
of the NonZero
type. With these macros, you
can easily generate constants of the generic type using literals, constant
values or expressions at compile time.
§Changelog
All changes to nz
crate are documented in CHANGELOG.md.
§Features
- No unsafe code
- No dependencies
no_std
compatible- Supports every type that implements the
ZeroablePrimitive
marker trait - Compile-time evaluation
§Macros
§Usage
use std::num::NonZero;
// A `NonZero<T>` type can be constructed from different types of
// arguments with the matching `nz` macro.
// Such argument can be an integer literal,
const NZ_MIN: NonZero<u8> = nz::u8!(1);
let nz_two = nz::u8!(2);
// a constant value,
const NZ_MAX: NonZero<u8> = nz::u8!(u8::MAX);
const SIX: u8 = 6;
let six = nz::u8!(SIX);
// or even a constant expression.
const RES: NonZero<u8> = nz::u8!({ 3 + 7 } - NZ_MIN.get());
let res = nz::u8!((NZ_MIN.get() & NZ_MAX.get()) + 7);
let five = nz::u8!({ const FIVE: u8 = 5; FIVE });
// However, a non-constant expression results in a compile-time error.
// const __ERR: NonZero<u8> = nz::u8!({ 3 + 7 } - nz_two.get());
Macros§
- i8
- Creates a
NonZero<i8>
from a literal, a constant value or expression that evaluates toi8
. - i16
- Creates a
NonZero<i16>
from a literal, a constant value or expression that evaluates toi16
. - i32
- Creates a
NonZero<i32>
from a literal, a constant value or expression that evaluates toi32
. - i64
- Creates a
NonZero<i64>
from a literal, a constant value or expression that evaluates toi64
. - i128
- Creates a
NonZero<i128>
from a literal, a constant value or expression that evaluates toi128
. - isize
- Creates a
NonZero<isize>
from a literal, a constant value or expression that evaluates toisize
. - u8
- Creates a
NonZero<u8>
from a literal, a constant value or expression that evaluates tou8
. - u16
- Creates a
NonZero<u16>
from a literal, a constant value or expression that evaluates tou16
. - u32
- Creates a
NonZero<u32>
from a literal, a constant value or expression that evaluates tou32
. - u64
- Creates a
NonZero<u64>
from a literal, a constant value or expression that evaluates tou64
. - u128
- Creates a
NonZero<u128>
from a literal, a constant value or expression that evaluates tou128
. - usize
- Creates a
NonZero<usize>
from a literal, a constant value or expression that evaluates tousize
.