#non-zero #macro #constant #constructing #integer

无std notzero

从常量构造 std::num::NonZero* 的宏

3个稳定版本

1.1.0 2024年6月28日
1.0.1 2023年11月9日
1.0.0 2023年11月8日

Rust模式 中排名第 973

Download history 165/week @ 2024-06-28 2/week @ 2024-07-05

每月下载量 145

版权 Zlib

13KB
209 代码行

Rust crates-io api-docs

提供用于从整数常量构造 std::num::NonZero* 的宏 nz

nz 宏可以从推断的 NonZero* 返回类型中推断出参数的类型,而一些替代宏始终要求指定参数的类型。

示例

用法

use notzero::nz;
use std::num::NonZeroU64;

let two = nz!(2u16); // returns a `NonZeroU16`
assert_eq!(two.get(), 2u16);

// infers the argument's type from the returned `NonZero`
const THREE: NonZeroU64 = nz!(3); 
assert_eq!(THREE.get(), 3u64);

const FOUR: i8 = -4;
let fourz = nz!(FOUR); // returns a `NonZeroI8`
assert_eq!(fourz.get(), -4i8);

无参数

const ZERO: u8 = 0;
let _ = notzero::nz!(ZERO);

上述代码会产生编译时错误

error[E0080]: evaluation of `main::_doctest_main_src_lib_rs_27_0::{constant#0}` failed
 --> src/lib.rs:32:9
  |
8 | let _ = notzero::nz!(ZERO);
  |         ^^^^^^^^^^^^^^^^^^ the evaluated program panicked at 'passed in a `0` argument', src/lib.rs:8:9
  |
  = note: this error originates in the macro `notzero::nz` (in Nightly builds, run with -Z macro-backtrace more info)

无std支持

notzero#![no_std],可以在Rust可以使用的任何地方使用。

最低支持的Rust版本

此crate需要Rust 1.79.0,因为它使用 const { ... } 表达式(也称为“内联const”)。

依赖项

~290KB