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 在 无标准库
10,678 每月下载量
用于 68 个 crates(12 个直接使用)
53KB
921 行
js_int
Crate js_int
提供JavaScript兼容的整数类型。
JavaScript 没有原生的整数类型。相反,它使用单个 Number
类型来表示所有数值,该类型表示为一个 IEEE 754 浮点值。Rust 的 i64
和 u64
类型可以包含超出 JavaScript Number
能表示范围的值。
此 crate 提供了类型 Int
和 UInt
,分别包装 i64
和 u64
。这些类型添加了边界检查,以确保包含的值在 JavaScript Number
能表示的范围内。它们提供了有用的 trait 实现,以便轻松地将 Rust 的原始整数类型转换为这些类型。
* 在即将推出的 ECMAScript 2020 中,JavaScript 可能会获得对整数的支持。有一个关于 BigInt
类型的提案,该类型可能很快就会成为 JavaScript 规范的一部分。但这并不会使这个 crate 过时,因为仍然会有大量的 JS 代码使用 Number
,以及其他语言中假设其使用的代码。
此 crate 需要 rustc >= 1.35。
此 crate 与 no_std
兼容,具有 default-features = false
。这将禁用 std
功能,在撰写本文时,这将仅排除 ParseIntError
和 TryFromIntError
的 std::error::Error
实现。
通过 serde
特性,支持(反)序列化,即使没有开启 std
特性。
可以通过 f64
而不是 u64
来进行反序列化,前提是开启了 float_deserialize
特性。但这仍然不会反序列化具有非零小数部分的数字。开启 lax_deserialize
特性将丢弃小数部分而不是拒绝反序列化。请注意,默认情况下 serde_json
不会无损解析具有小数部分的较大浮点数(即使小数部分是 .0
)。要修复这个问题,请启用其 float_roundtrip
特性。
依赖关系
~170KB