/// Allows for batching of the finalization of multiple [VoprfClient]
/// and [EvaluationElement] pairs
///
/// # Errors
/// - [`Error::Batch`] if the number of `clients` and `messages` don't match
///   or is longer then [`u16::MAX`].
/// - [`Error::ProofVerification`] if the `proof` failed to verify.
///
/// The resulting messages can each fail individually with [`Error::Input`]
/// if the `input` is empty or longer then [`u16::MAX`].
Allows for batching of the finalization of multiple [VoprfClient]
and [EvaluationElement] pairs
Allows for batching of the finalization of multiple [ VoprfClient ] and [ EvaluationElement ] pairs
pub fn batch_finalize<'a, I: 'a, II, IC, IM>(
        inputs: &'a II,
        clients: &'a IC,
        messages: &'a IM,
        proof: &Proof<CS>,
        pk: <CS::Group as Group>::Elem,
    ) -> Result<VoprfClientBatchFinalizeResult<'a, CS, I, II, IC, IM>>
    where
        CS: 'a,
        I: AsRef<[u8]>,
        &'a II: 'a + IntoIterator<Item = I>,
        <&'a II as IntoIterator>::IntoIter: ExactSizeIterator,
        &'a IC: 'a + IntoIterator<Item = &'a VoprfClient<CS>>,
        <&'a IC as IntoIterator>::IntoIter: ExactSizeIterator,
        &'a IM: 'a + IntoIterator<Item = &'a EvaluationElement<CS>>,
        <&'a IM as IntoIterator>::IntoIter: ExactSizeIterator,
    {
        let unblinded_elements = verifiable_unblind(clients, messages, pk, proof)?;
        let inputs_and_unblinded_elements = inputs.into_iter().zip(unblinded_elements);
        Ok(finalize_after_unblind::<CS, _, _>(
            inputs_and_unblinded_elements,
        ))
    }
pub fn batch_finalize < ' a , I : ' a , II , IC , IM > ( inputs : & ' a II , clients : & ' a IC , messages : & ' a IM , proof : & Proof < CS > , pk : < CS :: Group as Group > :: Elem , ) -> Result < VoprfClientBatchFinalizeResult < ' a , CS , I , II , IC , IM > > where CS : ' a , I : AsRef < [ u8 ] > , & ' a II : ' a + IntoIterator < Item = I > , < & ' a II as IntoIterator > :: IntoIter : ExactSizeIterator , & ' a IC : ' a + IntoIterator < Item = & ' a VoprfClient < CS > > , < & ' a IC as IntoIterator > :: IntoIter : ExactSizeIterator , & ' a IM : ' a + IntoIterator < Item = & ' a EvaluationElement < CS > > , < & ' a IM as IntoIterator > :: IntoIter : ExactSizeIterator , { let unblinded_elements = verifiable_unblind ( clients , messages , pk , proof ) ? ; let inputs_and_unblinded_elements = inputs . into_iter ( ) . zip ( unblinded_elements ) ; Ok ( finalize_after_unblind :: < CS , _ , _ > ( inputs_and_unblinded_elements , ) ) }
Allows for batching of the finalization of multiple [VoprfClient]
and [EvaluationElement] pairs
Allows for batching of the finalization of multiple [ VoprfClient ] and [ EvaluationElement ] pairs
inputs
&'a II
clients
&'a IC
messages
&'a IM
proof
&Proof<CS>
pk
<CS::Group as Group>::Elem
errors
[`Error::Batch`] if the number of `clients` and `messages` don't match
or is longer then [`u16::MAX`].
[`Error::ProofVerification`] if the `proof` failed to verify.

The resulting messages can each fail individually with [`Error::Input`]
if the `input` is empty or longer then [`u16::MAX`].
[ ` Error :: Batch ` ] if the number of ` clients ` and ` messages ` don ' t match or is longer then [ ` u16 :: MAX ` ] . [ ` Error :: ProofVerification ` ] if the ` proof ` failed to verify . The resulting messages can each fail individually with [ ` Error :: Input ` ] if the ` input ` is empty or longer then [ ` u16 :: MAX ` ] .