From c3d36c94bf4e956af7707771dc93eede6999981c Mon Sep 17 00:00:00 2001 From: Jack Grigg Date: Sun, 23 Aug 2020 06:47:06 +0100 Subject: [PATCH] bls12_381: Add feature flags to docs.rs documentation --- bls12_381/src/g1.rs | 2 ++ bls12_381/src/g2.rs | 2 ++ bls12_381/src/lib.rs | 1 + bls12_381/src/pairings.rs | 6 ++++++ 4 files changed, 11 insertions(+) diff --git a/bls12_381/src/g1.rs b/bls12_381/src/g1.rs index 7328c3d3c..d30f88240 100644 --- a/bls12_381/src/g1.rs +++ b/bls12_381/src/g1.rs @@ -20,6 +20,7 @@ use crate::Scalar; /// /// Values of `G1Affine` are guaranteed to be in the $q$-order subgroup unless an /// "unchecked" API was misused. +#[cfg_attr(docsrs, doc(cfg(feature = "groups")))] #[derive(Copy, Clone, Debug)] pub struct G1Affine { pub(crate) x: Fp, @@ -414,6 +415,7 @@ impl G1Affine { } /// This is an element of $\mathbb{G}_1$ represented in the projective coordinate space. +#[cfg_attr(docsrs, doc(cfg(feature = "groups")))] #[derive(Copy, Clone, Debug)] pub struct G1Projective { x: Fp, diff --git a/bls12_381/src/g2.rs b/bls12_381/src/g2.rs index ce59b89d4..b0e7a8763 100644 --- a/bls12_381/src/g2.rs +++ b/bls12_381/src/g2.rs @@ -21,6 +21,7 @@ use crate::Scalar; /// /// Values of `G2Affine` are guaranteed to be in the $q$-order subgroup unless an /// "unchecked" API was misused. +#[cfg_attr(docsrs, doc(cfg(feature = "groups")))] #[derive(Copy, Clone, Debug)] pub struct G2Affine { pub(crate) x: Fp2, @@ -486,6 +487,7 @@ impl G2Affine { } /// This is an element of $\mathbb{G}_2$ represented in the projective coordinate space. +#[cfg_attr(docsrs, doc(cfg(feature = "groups")))] #[derive(Copy, Clone, Debug)] pub struct G2Projective { pub(crate) x: Fp2, diff --git a/bls12_381/src/lib.rs b/bls12_381/src/lib.rs index 5e8a7db29..7f16f1b47 100644 --- a/bls12_381/src/lib.rs +++ b/bls12_381/src/lib.rs @@ -9,6 +9,7 @@ //! * All operations are constant time unless explicitly noted. #![no_std] +#![cfg_attr(docsrs, feature(doc_cfg))] // Catch documentation errors caused by code changes. #![deny(intra_doc_link_resolution_failure)] #![deny(missing_debug_implementations)] diff --git a/bls12_381/src/pairings.rs b/bls12_381/src/pairings.rs index 440d3038f..6e9cd4b89 100644 --- a/bls12_381/src/pairings.rs +++ b/bls12_381/src/pairings.rs @@ -19,6 +19,7 @@ use alloc::vec::Vec; /// Represents results of a Miller loop, one of the most expensive portions /// of the pairing function. `MillerLoopResult`s cannot be compared with each /// other until `.final_exponentiation()` is called, which is also expensive. +#[cfg_attr(docsrs, doc(cfg(feature = "pairings")))] #[derive(Copy, Clone, Debug)] pub struct MillerLoopResult(pub(crate) Fp12); @@ -180,6 +181,7 @@ impl_add_binop_specify_output!(MillerLoopResult, MillerLoopResult, MillerLoopRes /// /// Typically, $\mathbb{G}_T$ is written multiplicatively but we will write it additively to /// keep code and abstractions consistent. +#[cfg_attr(docsrs, doc(cfg(feature = "pairings")))] #[derive(Copy, Clone, Debug, Default)] pub struct Gt(pub(crate) Fp12); @@ -449,6 +451,7 @@ impl Group for Gt { } #[cfg(feature = "alloc")] +#[cfg_attr(docsrs, doc(cfg(all(feature = "pairings", feature = "alloc"))))] #[derive(Clone, Debug)] /// This structure contains cached computations pertaining to a $\mathbb{G}_2$ /// element as part of the pairing function (specifically, the Miller loop) and @@ -509,6 +512,7 @@ impl From for G2Prepared { } #[cfg(feature = "alloc")] +#[cfg_attr(docsrs, doc(cfg(all(feature = "pairings", feature = "alloc"))))] /// Computes $$\sum_{i=1}^n \textbf{ML}(a_i, b_i)$$ given a series of terms /// $$(a_1, b_1), (a_2, b_2), ..., (a_n, b_n).$$ /// @@ -565,6 +569,7 @@ pub fn multi_miller_loop(terms: &[(&G1Affine, &G2Prepared)]) -> MillerLoopResult } /// Invoke the pairing function without the use of precomputation and other optimizations. +#[cfg_attr(docsrs, doc(cfg(feature = "pairings")))] pub fn pairing(p: &G1Affine, q: &G2Affine) -> Gt { struct Adder { cur: G2Projective, @@ -749,6 +754,7 @@ impl PairingCurveAffine for G2Affine { } /// A [`pairing::Engine`] for BLS12-381 pairing operations. +#[cfg_attr(docsrs, doc(cfg(feature = "pairings")))] #[derive(Clone, Debug)] pub struct Bls12;