spherenet_program_whitelist_interface/
error.rs

1//! Error types
2
3use pinocchio::program_error::{ProgramError, ToStr};
4
5/// Errors that may be returned by the Program Whitelist program.
6#[derive(thiserror::Error, Clone, Debug, Eq, PartialEq)]
7pub enum ProgramWhitelistError {
8    // 0
9    /// No pending authority.
10    #[error("No pending authority")]
11    NoPendingAuthority = 60456,
12}
13
14impl From<ProgramWhitelistError> for ProgramError {
15    fn from(e: ProgramWhitelistError) -> Self {
16        ProgramError::Custom(e as u32)
17    }
18}
19
20impl ToStr for ProgramWhitelistError {
21    fn to_str<E>(&self) -> &'static str
22    where
23        E: 'static + ToStr + TryFrom<u32>,
24    {
25        match self {
26            ProgramWhitelistError::NoPendingAuthority => "Error: No pending authority",
27        }
28    }
29}
30
31impl TryFrom<u32> for ProgramWhitelistError {
32    type Error = ProgramError;
33    fn try_from(value: u32) -> Result<Self, Self::Error> {
34        match value {
35            0 => Ok(ProgramWhitelistError::NoPendingAuthority),
36
37            _ => Err(ProgramError::InvalidArgument),
38        }
39    }
40}