Macro nonzero_lit::usize[][src]

macro_rules! usize {
    ($val:expr $(,)?) => { ... };
}

Create a literal NonZeroUsize.

Examples

Basic usage

let x = nonzero_lit::usize!(4);
assert_eq!(x.get(), 4);

Works for consts, and the parameter can be any const expression (not just a literal).

const A: usize = 5;
const B: core::num::NonZeroUsize = nonzero_lit::usize!(A * 10);
assert_eq!(B.get(), 50);

Misuse is detected at compile time.

const ZERO: core::num::NonZeroUsize = nonzero_lit::usize!(0);

Macro is robust in the face of #[allow(...)].

#[allow(const_err)]
const ZERO: core::num::NonZeroUsize = nonzero_lit::usize!(0);
let zero = nonzero_lit::usize!(usize::MAX.wrapping_add(1));

Note: argument must be a constant expression.

let bar = 3;
let foo = nonzero_lit::usize!(bar);