#typenum #substrate #unsigned-integer #signed-integer #numbers #compile #bits

无需 std substrate-typenum

Typenum 是一个 Rust 库,用于在编译时评估类型级别的数字。它目前支持位、无符号整数和有符号整数。它还提供了一个类型级别的数字数组,但其实现尚不完整。这个 substrate-typenum 分支只为 substrate 添加了 SCALE 编码器 derive。

1 个稳定版本

1.16.0 2023 年 10 月 25 日

#14#typenum

Download history 798/week @ 2024-04-08 901/week @ 2024-04-15 532/week @ 2024-04-22 560/week @ 2024-04-29 474/week @ 2024-05-06 574/week @ 2024-05-13 724/week @ 2024-05-20 834/week @ 2024-05-27 924/week @ 2024-06-03 826/week @ 2024-06-10 676/week @ 2024-06-17 1253/week @ 2024-06-24 833/week @ 2024-07-01 678/week @ 2024-07-08 1220/week @ 2024-07-15 1037/week @ 2024-07-22

3,800 每月下载量
23 个 crate 中使用(通过 substrate-fixed

MIT/Apache

195KB
5.5K SLoC

crates.io Build Status

Typenum

Typenum 是一个 Rust 库,用于在编译时评估类型级别的数字。它目前支持位、无符号整数和有符号整数。

Typenum 只依赖于 libcore,因此适用于任何平台!

有关完整文档,请访问 此处

导入

虽然 typenum 被分成几个模块,但它们都通过 crate 根重新导出,因此您可以使用 use typenum:: whatever; 导入其中任何内容,忽略 crate 结构。

您还可以将 consts 模块视为一个前言,执行全局导入。

示例

以下是一个使用 typenum 的简单示例

use typenum::{Sum, Exp, Integer, N2, P3, P4};

type X = Sum<P3, P4>;
assert_eq!(<X as Integer>::to_i32(), 7);

type Y = Exp<N2, P3>;
assert_eq!(<Y as Integer>::to_i32(), -8);

有关其使用的非简单示例,请参阅依赖于它的 crate 之一。完整列表 此处。值得注意的是 dimensioned,它可以在编译时对任意单位系统进行类型检查,以及 generic-array,它提供可以泛型引用长度的数组。

错误信息

Typenum 的错误信息不太好,可能难以解析。好消息是,Auxon 的优秀人士编写了一个工具来帮助解决这个问题。请查看 tnfilt

许可证

根据以下之一许可

根据您自己的选择。

贡献

除非您明确说明,否则任何您有意提交以包含在作品中的贡献,根据Apache-2.0许可证定义,应如上双重许可,不附加任何额外条款或条件。

依赖项

~0–520KB
~11K SLoC