#integer #javascript #numbers #u64 #i64 #floating-point #language

无 std js_int

JavaScript 兼容的整数类型

13 个版本

0.2.2 2022 年 3 月 23 日
0.2.1 2021 年 5 月 26 日
0.2.0 2020 年 12 月 8 日
0.1.9 2020 年 7 月 19 日
0.1.1 2019 年 7 月 7 日

#67无标准库

Download history 2514/week @ 2024-03-14 2770/week @ 2024-03-21 3008/week @ 2024-03-28 2204/week @ 2024-04-04 2223/week @ 2024-04-11 3133/week @ 2024-04-18 3093/week @ 2024-04-25 2990/week @ 2024-05-02 2821/week @ 2024-05-09 2466/week @ 2024-05-16 2603/week @ 2024-05-23 2580/week @ 2024-05-30 2581/week @ 2024-06-06 2857/week @ 2024-06-13 2759/week @ 2024-06-20 2044/week @ 2024-06-27

10,678 每月下载量
用于 68 个 crates(12 个直接使用)

MIT 许可证

53KB
921

js_int

Latest Version Docs

Crate js_int 提供JavaScript兼容的整数类型。

JavaScript 没有原生的整数类型。相反,它使用单个 Number 类型来表示所有数值,该类型表示为一个 IEEE 754 浮点值。Rust 的 i64u64 类型可以包含超出 JavaScript Number 能表示范围的值。

此 crate 提供了类型 IntUInt,分别包装 i64u64。这些类型添加了边界检查,以确保包含的值在 JavaScript Number 能表示的范围内。它们提供了有用的 trait 实现,以便轻松地将 Rust 的原始整数类型转换为这些类型。

* 在即将推出的 ECMAScript 2020 中,JavaScript 可能会获得对整数的支持。有一个关于 BigInt 类型的提案,该类型可能很快就会成为 JavaScript 规范的一部分。但这并不会使这个 crate 过时,因为仍然会有大量的 JS 代码使用 Number,以及其他语言中假设其使用的代码。

此 crate 需要 rustc >= 1.35。

此 crate 与 no_std 兼容,具有 default-features = false。这将禁用 std 功能,在撰写本文时,这将仅排除 ParseIntErrorTryFromIntErrorstd::error::Error 实现。

通过 serde 特性,支持(反)序列化,即使没有开启 std 特性。

可以通过 f64 而不是 u64 来进行反序列化,前提是开启了 float_deserialize 特性。但这仍然不会反序列化具有非零小数部分的数字。开启 lax_deserialize 特性将丢弃小数部分而不是拒绝反序列化。请注意,默认情况下 serde_json 不会无损解析具有小数部分的较大浮点数(即使小数部分是 .0)。要修复这个问题,请启用其 float_roundtrip 特性。

依赖关系

~170KB