arcium-core-utils 0.6.0

Arcium core utils
Documentation
use primitives::{
    algebra::elliptic_curve::Curve,
    correlated_randomness::{
        bundler::Bundler,
        dabits::DaBit,
        singlets::Singlet,
        stream::{Next, NextVec},
        triples::Triple,
    },
};

use crate::errors::AbortError;

pub mod bundler;
pub mod iterator;

// ---------- Type aliases for preprocessing futures --------------

pub type NextSinglet<F> = Next<Singlet<F>, AbortError>;
pub type NextTriple<F> = Next<Triple<F>, AbortError>;
pub type NextDaBit<F> = Next<DaBit<F>, AbortError>;

pub type NextSinglets<F> = NextVec<Singlet<F>, AbortError>;
pub type NextTriples<F> = NextVec<Triple<F>, AbortError>;
pub type NextDaBits<F> = NextVec<DaBit<F>, AbortError>;

// ---------- PreprocessingBundler trait alias -------------------

/// Alias for any [`Bundler`] whose iterator is the curve-parameterised
/// [`iterator::PreprocessingIterator<C>`].
pub trait PreprocessingBundler<C: Curve>:
    Bundler<Iterator = iterator::PreprocessingIterator<C>>
{
}

impl<C: Curve, T: Bundler<Iterator = iterator::PreprocessingIterator<C>>> PreprocessingBundler<C>
    for T
{
}