#numbers #complex-numbers #complex #float #deserialize #integer

number-general

Rust 中的一种泛型数字类型,支持基本的数学运算和序列化/反序列化

33 个版本

0.12.0 2024 年 8 月 13 日
0.11.1 2023 年 12 月 20 日
0.11.0 2023 年 11 月 6 日
0.10.0 2023 年 7 月 3 日
0.3.0 2021 年 2 月 1 日

278数据结构

Download history 16/week @ 2024-04-25 15/week @ 2024-05-02 19/week @ 2024-05-09 32/week @ 2024-05-16 35/week @ 2024-05-23 33/week @ 2024-05-30 22/week @ 2024-06-06 28/week @ 2024-06-13 40/week @ 2024-06-20 13/week @ 2024-06-27 4/week @ 2024-07-04 28/week @ 2024-07-11 36/week @ 2024-07-18 35/week @ 2024-07-25 29/week @ 2024-08-01 80/week @ 2024-08-08

189 每月下载次数
用于 16 个crate (4 个直接)

Apache-2.0

125KB
4K SLoC

number-general

一个支持基本数学运算、序列化/反序列化和使用 safecast 进行类型转换的 Rust 泛型数字类型。

示例用法

use number_general::{Int, Number};
use safecast::CastFrom;

let sequence: Vec<Number> = serde_json::from_str("[true, 2, 3.5, -4, [1.0, -0.5]]").unwrap();
let actual = sequence.into_iter().product();

assert_eq!(actual, Number::from(num::Complex::<f64>::new(-28., 14.)));
assert_eq!(Int::cast_from(actual), Int::from(-28));

lib.rs:

提供了一种泛型 Number 枚举,具有 BooleanComplexFloat、[Int] 和 UInt 变体,以及 NumberCollatorComplexCollatorFloatCollator,因为这些类型没有实现 [Ord]。

Number 支持与 safecast 的类型转换。

对于使用 serde 进行序列化/反序列化,请启用 "serde" 功能。

对于使用 destream 进行编码/解码,请启用 "stream" 功能。

示例用法

let sequence: Vec<Number> = vec![true.into(), 2.into(), 3.5.into(), [1.0, -0.5].into()];
let actual = sequence.into_iter().product();
let expected = Number::from(num::Complex::<f64>::new(7., -3.5));

assert_eq!(expected, actual);
assert_eq!(Int::cast_from(actual), Int::from(7));

依赖关系

~1.2–2.1MB
~43K SLoC