#prime-field #procedural #proc-macro #derive #finite-fields #build #traits

ff_derive_ce

用于构建自定义素数域实现的进程宏库

14个版本 (7个重大更新)

0.11.2 2022年11月30日
0.11.0 2022年6月23日
0.10.0 2021年5月14日
0.9.3 2021年3月30日
0.4.0 2019年3月31日

#968 in 过程宏

Download history 9928/week @ 2024-04-22 6228/week @ 2024-04-29 11202/week @ 2024-05-06 14011/week @ 2024-05-13 9231/week @ 2024-05-20 12382/week @ 2024-05-27 14807/week @ 2024-06-03 10375/week @ 2024-06-10 10343/week @ 2024-06-17 11603/week @ 2024-06-24 11124/week @ 2024-07-01 16512/week @ 2024-07-08 2450/week @ 2024-07-15 11802/week @ 2024-07-22 14467/week @ 2024-07-29 9716/week @ 2024-08-05

每月38,655次下载
83 个crate中使用(通过 ff_ce

MIT/Apache

110KB
2.5K SLoC

"FF社区版"

此库是Sean Bowe原创的ff库的社区维护分支。库的名称已更改,以便在crates.io上发布

原始ff

ff是一个使用纯Rust编写的有限域库,没有任何unsafe{}代码。

免责声明

  • 此库不提供恒等时间保证。

用法

ff_cecrate添加到您的Cargo.toml

[dependencies]
ff_ce = "0.6"

ff_cecrate包含FieldPrimeFieldPrimeFieldReprSqrtField特质。有关更多信息,请参阅文档

#![derive(PrimeField)]

如果您需要一个素数域的实现,此库还提供了一个过程宏,当提供模数时,将扩展为一个高效的素数域实现。PrimeFieldGenerator必须是Fp的p-1阶元素,也是二次非剩余。

首先,启用derivecrate功能

[dependencies]
ff = { ..., features = ["derive"] }

然后按如下方式使用宏

extern crate rand;
#[macro_use]
extern crate ff_ce;

#[derive(PrimeField)]
#[PrimeFieldModulus = "52435875175126190479447740508185965837690552500527637822603658699938581184513"]
#[PrimeFieldGenerator = "7"]
struct Fp(FpRepr);

就是这样!Fp现在实现了FieldPrimeField。如果支持,Fp还将实现SqrtField。库实现了自己的FpRepr并为其推导出PrimeFieldRepr

许可证

根据以下任一许可证授权

由您选择。

贡献

除非您明确说明,否则根据Apache-2.0许可证定义的,您有意提交以包含在工作中的任何贡献,应按上述方式双重许可,不附加任何额外的条款或条件。

依赖项

~0.8–1.5MB
~33K SLoC