Cargo Features

[dependencies]
decaf377 = { version = "0.10.1", default-features = false, features = ["std", "alloc", "parallel", "arkworks", "r1cs", "u32_backend"] }

This matches what ark-std (a library for no_std compatibility) does, having a default feature of std - without the ark-std std feature, decaf377 doesn't compile

default = arkworks

The arkworks feature is set by default whenever decaf377 is added without default-features = false somewhere in the dependency tree.

std arkworks = alloc

Enables std of hex, num-bigint, once_cell, rand_core, subtle, and zeroize

num-bigint:

no-std

alloc std?

Enables alloc of once_cell, rand_core, and zeroize

once_cell:

Enables once_cell::race::OnceBox type.

parallel

Enables parallel of ark-ec ^0.4, ark-ff ^0.4, ark-groth16 ^0.4, ark-r1cs-std ^0.4, and ark-std ^0.4

arkworks default r1cs? = ark-bls12-377, ark-ec, ark-ed-on-bls12-377, ark-ff, ark-serialize, ark-std, hashbrown, std

TODO: eventually, feature-gate all arkworks deps behind this feature.

Affects fp::arkworks, fq::arkworks, fr::arkworks, fr::u64

r1cs = ark-groth16, ark-r1cs-std, ark-relations, ark-snark, arkworks

Affects ark_curve::r1cs

u32_backend

Features from optional dependencies

In crates that don't use the dep: syntax, optional dependencies automatically become Cargo features. These features may have been created by mistake, and this functionality may be removed in the future.

num-bigint std?
hashbrown arkworks

Enables hashbrown ^0.14.3

std

ark-relations r1cs?

Enables ark-relations ^0.4

ark-r1cs-std parallel? r1cs?

Enables ark-r1cs-std ^0.4

ark-std arkworks parallel?

Enables ark-std ^0.4

ark-ec arkworks parallel?

Enables ark-ec ^0.4

ark-ff arkworks parallel?

Enables ark-ff ^0.4

ark-serialize arkworks

Enables ark-serialize ^0.4

ark-bls12-377 arkworks

Enables ark-bls12-377 ^0.4

ark-ed-on-bls12-377 arkworks

Enables ark-ed-on-bls12-377 ^0.4

ark-groth16 parallel? r1cs?

Enables ark-groth16 ^0.4

ark-snark r1cs?

Enables ark-snark ^0.4

once_cell alloc? std?