3 个版本 (破坏性更新)
0.2.0 | 2021 年 5 月 23 日 |
---|---|
0.1.0 | 2021 年 2 月 6 日 |
0.0.1 | 2021 年 1 月 11 日 |
#716 在 HTTP 服务器
每月 22 次下载
用于 turbo_server
9KB
171 代码行
i54_
为 Rust 创建的 54 位有符号整数抽象。创建用于更轻松地与 GraphQL 和 JavaScript 进行互操作,后者没有适当的 i64
兼容的原始类型。
前提
JavaScript 和 GraphQL 都以原生方式表示大型(超过 32 位)整数作为双精度浮点值,并且没有表示大整数的原始类型。
当在 Rust 中表示大于 u32
的整数时,同时保持与 JavaScript 和 GraphQL 的类型互操作性,这会带来问题。
为了使程序员意图明确,我们提供了一个 i54
类型,该类型理想上应类似于 Rust 原始类型,并旨在表示适合于假设的 54 位有符号整数原始类型的值。
i54
表示可以由一个 IEEE 754 双精度浮点表示 精确编码的最大有符号整数。 (大约编码为尾数 52 位,指数位派生的 1 位和 1 位符号位。)
令人兴奋的特性实现
serde
-Serialize
,Deserialize
rusqlite
(可选) -FromSql
,ToSql
juniper
(可选) -GraphQLScalar
用法
[dependencies]
i54_ = {version = "0.2", features = ["rusqlite", "juniper"]}
use i54_::i54;
fn main() {
let mut x: i54 = 1.into();
x += 1.into();
assert!(x == 2);
}
许可证:MIT OR Apache-2.0 OR CC0-1.0 (公共领域)
依赖项
~0.5–5.5MB
~119K SLoC