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 在 数据结构 中
189 每月下载次数
用于 16 个crate (4 个直接)
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
枚举,具有 Boolean
、Complex
、Float
、[Int
] 和 UInt
变体,以及 NumberCollator
、ComplexCollator
和 FloatCollator
,因为这些类型没有实现 [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