#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 · Rust 包仓库 16/week @ 2024-04-25 · Rust 包仓库 15/week @ 2024-05-02 · Rust 包仓库 19/week @ 2024-05-09 · Rust 包仓库 32/week @ 2024-05-16 · Rust 包仓库 35/week @ 2024-05-23 · Rust 包仓库 33/week @ 2024-05-30 · Rust 包仓库 22/week @ 2024-06-06 · Rust 包仓库 28/week @ 2024-06-13 · Rust 包仓库 40/week @ 2024-06-20 · Rust 包仓库 13/week @ 2024-06-27 · Rust 包仓库 4/week @ 2024-07-04 · Rust 包仓库 28/week @ 2024-07-11 · Rust 包仓库 36/week @ 2024-07-18 · Rust 包仓库 35/week @ 2024-07-25 · Rust 包仓库 29/week @ 2024-08-01 · Rust 包仓库 80/week @ 2024-08-08 · Rust 包仓库

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