spherenet-program-whitelist-interface 0.1.4

Interface of SphereNet's Program Whitelist Program
Documentation
//! Error types

use pinocchio::program_error::{ProgramError, ToStr};

/// Errors that may be returned by the Program Whitelist program.
#[derive(thiserror::Error, Clone, Debug, Eq, PartialEq)]
pub enum ProgramWhitelistError {
    // 0
    /// No pending authority.
    #[error("No pending authority")]
    NoPendingAuthority = 60456,
}

impl From<ProgramWhitelistError> for ProgramError {
    fn from(e: ProgramWhitelistError) -> Self {
        ProgramError::Custom(e as u32)
    }
}

impl ToStr for ProgramWhitelistError {
    fn to_str<E>(&self) -> &'static str
    where
        E: 'static + ToStr + TryFrom<u32>,
    {
        match self {
            ProgramWhitelistError::NoPendingAuthority => "Error: No pending authority",
        }
    }
}

impl TryFrom<u32> for ProgramWhitelistError {
    type Error = ProgramError;
    fn try_from(value: u32) -> Result<Self, Self::Error> {
        match value {
            0 => Ok(ProgramWhitelistError::NoPendingAuthority),

            _ => Err(ProgramError::InvalidArgument),
        }
    }
}