1use super::transcript::TranscriptError;
10use ark_serialize::SerializationError;
11use ark_std::string::String;
12use displaydoc::Display;
13#[cfg(feature = "icicle")]
14use icicle_core::error::IcicleError;
15#[cfg(feature = "icicle")]
16use icicle_cuda_runtime::error::CudaError;
17
18#[derive(Display, Debug)]
20pub enum PCSError {
21 InvalidProver(String),
23 InvalidVerifier(String),
25 InvalidProof(String),
27 InvalidParameters(String),
29 SerializationError(SerializationError),
31 TranscriptError(TranscriptError),
33 UpstreamError(String),
35 #[cfg(feature = "icicle")]
36 IcicleError(String),
38}
39
40impl ark_std::error::Error for PCSError {}
41
42impl From<SerializationError> for PCSError {
43 fn from(e: ark_serialize::SerializationError) -> Self {
44 Self::SerializationError(e)
45 }
46}
47
48impl From<TranscriptError> for PCSError {
49 fn from(e: TranscriptError) -> Self {
50 Self::TranscriptError(e)
51 }
52}
53
54#[cfg(feature = "icicle")]
55impl From<IcicleError> for PCSError {
56 fn from(e: IcicleError) -> Self {
57 Self::IcicleError(ark_std::format!("{:?}", e))
58 }
59}
60#[cfg(feature = "icicle")]
61impl From<CudaError> for PCSError {
62 fn from(e: CudaError) -> Self {
63 let icicle_err = IcicleError::from_cuda_error(e);
64 icicle_err.into()
65 }
66}