arkworks-rs / poly-commit

A Rust library for polynomial commitments
Apache License 2.0
326 stars 128 forks source link

Odd usage/API of PolynomialCommitment trait associated error #108

Open CPerezz opened 1 year ago

CPerezz commented 1 year ago

Hey! I've been with the ark-poly-commit library. And I have my Error enum where inside I have an ArkPolyCommit error variant.

The issue is that seems I can't do:

pub fn universal_setup<R: RngCore>(
        max_degree: usize,
        rng: &mut R,
    ) -> Result<UniversalSRS<F, PC>, MyError> {
        PC::setup(max_degree, None, rng)
            .map_err(|err| ark_poly_commit::Error::from)?
    }

Nor

pub fn universal_setup<R: RngCore>(
        max_degree: usize,
        rng: &mut R,
    ) -> Result<UniversalSRS<F, PC>, MyError> {
        PC::setup(max_degree, None, rng)?
    }

And I have the From<ark-poly-commit-error> for MyError ofc.

The issue I see is that PolynomialCommitment has an associated Error type. And although the associated trait bounds seem correct. I can't make it work as requires me to add generics in all my errors where this should not be necessary. See: https://github.com/arkworks-rs/poly-commit/blob/master/src/lib.rs#L174

Wondering how does people sort this out without ugly solutions like https://github.com/ZK-Garage/plonk/blob/master/plonk-core/src/error.rs#L96-L107.

Ideally, can't we remove the Error type from the trait and just leave the regular error? This would make integration within enums much easier.