#non-zero #const #inference #compile-time #checked #integer #first-class

no-std non0

编译时检查的非零整数,具有类型推断和第一类const支持

1个不稳定版本

0.1.0 2024年7月9日

#1552 in Rust模式

Download history 86/week @ 2024-07-04 22/week @ 2024-07-11 4/week @ 2024-07-25

112 每月下载量

MIT/Apache

7KB
91

编译时检查的非零整数,具有类型推断和第一类const支持。

const UNSIGNED: NonZeroUsize = nonzero!(1);
const SIGNED: NonZeroI8 = nonzero!(-1);
           // ^ correctly infers return type

const MY_CONST: usize = 20;
const MY_NONZERO_CONST: NonZeroUsize = nonzero!(MY_CONST - 19);
              // refer to other constant values ^
let runtime = nonzero!(0); // eager evaluation

与其他库的比较

  • nonzero使用一个proc-macro来解析传递给它的表达式,这排除了
    • 类型推断。
    • 引用常量。

lib.rs:

编译时检查的非零整数,具有类型推断和第一类const支持。

const UNSIGNED: NonZeroUsize = nonzero!(1);
const SIGNED: NonZeroI8 = nonzero!(-1);
           // ^ correctly infers return type

const MY_CONST: usize = 20;
const MY_NONZERO_CONST: NonZeroUsize = nonzero!(MY_CONST - 19);
              // refer to other constant values ^
let runtime = nonzero!(0); // eager evaluation

与其他库的比较

  • nonzero使用一个proc-macro来解析传递给它的表达式,这排除了
    • 类型推断。
    • 引用常量。

依赖

~510–740KB