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