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