#大整数 #大数 #数值

无需std num-bigint-dig

Rust的大整数实现

13个不稳定版本

0.8.4 2023年6月30日
0.8.2 2022年11月18日
0.8.1 2022年3月1日
0.7.1 2023年7月10日
0.2.1 2018年11月24日

20 in 数学

Download history 349500/week @ 2024-03-14 357447/week @ 2024-03-21 341719/week @ 2024-03-28 363363/week @ 2024-04-04 385162/week @ 2024-04-11 389039/week @ 2024-04-18 383946/week @ 2024-04-25 400457/week @ 2024-05-02 396317/week @ 2024-05-09 433828/week @ 2024-05-16 428223/week @ 2024-05-23 476008/week @ 2024-05-30 442928/week @ 2024-06-06 440087/week @ 2024-06-13 426115/week @ 2024-06-20 364429/week @ 2024-06-27

1,775,664 每月下载量
用于 1,304 个crates (60 直接)

MIT/Apache

360KB
9K SLoC

num-bigint-dig

crate documentation minimum rustc 1.56 Travis status

Rust的大整数类型,包括BigIntBigUint

警告 这是对rust-num/num-bigint的分支,重点在于提供实现加密操作所需的功能。

使用方法

将以下内容添加到您的Cargo.toml

[dependencies]
num-bigint-dig = "^0.7"

并添加到您的crate根目录

extern crate num_bigint_dig as num_bigint;

功能

std功能默认启用并强制在较旧的Rust版本上编译。

可以在no_std目标上使用此crate。如果您想为没有stdcrate的目标编译,您应该使用带有num-bigintdefault-features = falsenum-bigint。所有其他子功能都应与no_std兼容。请注意,在此模式下,num-bigint仍然依赖于alloc crate,因此请确保定义一个global_allocator

i128u128的实现仅适用于Rust 1.26及以后版本。构建脚本会自动检测此情况,但您可以通过启用i128 crate功能来强制执行。

u64_digit功能启用使用更大的内部"数字"(或称为"肢体")。在具有原生支持的架构上加速几乎所有操作。

prime功能门启用处理大素数的算法和支持。

发布

发布说明可在RELEASES.md中找到。

兼容性

num-bigint crate经过rustc 1.56及以上版本的测试。

替代方案

虽然 num-bigint 在纯Rust代码中力求良好的性能,但其他crate可能通过不同的权衡提供更好的性能。以下表格简要比较了几种替代方案。

crate 许可证 最小rustc 实现方式
num-bigint-dig MIT/Apache-2.0 1.56 纯Rust
num-bigint MIT/Apache-2.0 1.15 纯Rust
ramp Apache-2.0 nightly Rust和内联汇编
rug LGPL-3.0+ 1.18 通过 GMPgmp-mpfr-sys 进行捆绑
rust-gmp MIT 稳定? 链接到 GMP
apint MIT/Apache-2.0 1.26 纯Rust(未完成)

基准测试

cargo bench --features prime

依赖项

~0.8–1.4MB
~27K SLoC