light_circuitlib_rs/
errors.rs

1use ark_relations::r1cs::SynthesisError;
2use ark_serialize::SerializationError;
3use color_eyre::Report;
4use groth16_solana::errors::Groth16Error;
5use thiserror::Error;
6
7#[derive(Debug, Error)]
8pub enum CircuitsError {
9    #[error("Error: {0}")]
10    GenericError(String),
11
12    #[error("Arkworks prover error: {0}")]
13    ArkworksProverError(String),
14
15    #[error("Arkworks serialization error: {0}")]
16    ArkworksSerializationError(String),
17
18    #[error("Groth16-Solana Error: {0}")]
19    Groth16SolanaError(Groth16Error),
20
21    #[error("Cannot change endianness")]
22    ChangeEndiannessError,
23
24    #[error("Cannot parse inputs")]
25    InputsParsingError,
26
27    #[error("Wrong number of UTXO's")]
28    WrongNumberOfUtxos,
29}
30
31impl From<SerializationError> for CircuitsError {
32    fn from(error: SerializationError) -> Self {
33        CircuitsError::ArkworksSerializationError(error.to_string())
34    }
35}
36
37impl From<SynthesisError> for CircuitsError {
38    fn from(error: SynthesisError) -> Self {
39        CircuitsError::ArkworksProverError(error.to_string())
40    }
41}
42
43impl From<Report> for CircuitsError {
44    fn from(error: Report) -> Self {
45        CircuitsError::GenericError(error.to_string())
46    }
47}
48
49impl From<Groth16Error> for CircuitsError {
50    fn from(error: Groth16Error) -> Self {
51        CircuitsError::Groth16SolanaError(error)
52    }
53}