8 个版本

0.5.5 2023 年 11 月 19 日
0.5.4 2023 年 11 月 9 日
0.5.3 2022 年 7 月 2 日
0.5.1 2022 年 6 月 30 日
0.2.0 2020 年 9 月 28 日

Rust 模式 中排名 116

Download history 17232/week @ 2024-04-23 16687/week @ 2024-04-30 14992/week @ 2024-05-07 15196/week @ 2024-05-14 16304/week @ 2024-05-21 18270/week @ 2024-05-28 20622/week @ 2024-06-04 18498/week @ 2024-06-11 18139/week @ 2024-06-18 16893/week @ 2024-06-25 20605/week @ 2024-07-02 19776/week @ 2024-07-09 19566/week @ 2024-07-16 23580/week @ 2024-07-23 23301/week @ 2024-07-30 21842/week @ 2024-08-06

每月下载 92,991
用于 866 软件包(直接使用 26 个)

MIT/Apache 许可证

24KB
393

nonmax

GitHub CI Status nonmax on crates.io nonmax docs

nonmax 提供与 std 库中的 NonZero* 类型类似的数据类型,但要求它们的值不是它们类型的最大值。这确保了 Option<NonMax*> 的大小不会超过 NonMax*

nonmax 支持标准库中具有相应非零变体的所有类型

  • NonMaxI8
  • NonMaxI16
  • NonMaxI32
  • NonMaxI64
  • NonMaxI128
  • NonMaxIsize
  • NonMaxU8
  • NonMaxU16
  • NonMaxU32
  • NonMaxU64
  • NonMaxU128
  • NonMaxUsize

示例

use nonmax::{NonMaxI16, NonMaxU8};

let value = NonMaxU8::new(16).expect("16 should definitely fit in a u8");
assert_eq!(value.get(), 16);
assert_eq!(std::mem::size_of_val(&value), 1);

let signed = NonMaxI16::new(i16::min_value()).expect("minimum values are fine");
assert_eq!(signed.get(), i16::min_value());
assert_eq!(std::mem::size_of_val(&signed), 2);

let oops = NonMaxU8::new(255);
assert_eq!(oops, None);

特性

  • std(默认):为 ParseIntErrorTryFromIntError 实现 std::error::Error。为了支持 #![no_std],请禁用此功能。

  • serde:实现了来自 serdeSerializeDeserialize 特性。

最小支持的 Rust 版本 (MSRV)

nonmax 支持 Rust 1.47.0 及更高版本。在此库达到 1.0 之前,MSRV 的更改需要主要版本号的增加。在 1.0 之后,MSRV 的更改只需要次要版本号的增加,但需要充分的理由。

许可证

许可协议为以下之一:

您可选择其中之一。

贡献

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

依赖项

~165KB