hayabusa_errors/
error_code.rs1use pinocchio::program_error::{ProgramError, ToStr};
5
6#[derive(Debug, PartialEq, Eq)]
7pub enum ErrorCode {
8 UnknownInstruction = 100,
9 BufferFull,
10 InvalidAccountDiscriminator,
11 AccountNotSigner,
12 InvalidAccount,
13 AccountNotWritable,
14}
15
16impl TryFrom<u32> for ErrorCode {
17 type Error = ProgramError;
18
19 fn try_from(value: u32) -> Result<Self, Self::Error> {
20 match value {
21 100 => Ok(ErrorCode::UnknownInstruction),
22 101 => Ok(ErrorCode::BufferFull),
23 102 => Ok(ErrorCode::InvalidAccountDiscriminator),
24 105 => Ok(ErrorCode::AccountNotSigner),
25 106 => Ok(ErrorCode::InvalidAccount),
26 107 => Ok(ErrorCode::AccountNotWritable),
27 _ => Err(ProgramError::InvalidArgument),
28 }
29 }
30}
31
32impl From<ErrorCode> for ProgramError {
33 fn from(e: ErrorCode) -> Self {
34 ProgramError::Custom(e as u32)
35 }
36}
37
38impl ToStr for ErrorCode {
39 fn to_str<E>(&self) -> &'static str
40 where
41 E: ToStr + TryFrom<u32> + 'static,
42 {
43 match self {
44 ErrorCode::UnknownInstruction => "Error: Unknown instruction",
45 ErrorCode::BufferFull => "Error: Buffer full",
46 ErrorCode::InvalidAccountDiscriminator => "Error: Invalid account discriminator",
47 ErrorCode::AccountNotSigner => "Error: Account is not a signer",
48 ErrorCode::InvalidAccount => "Error: Invalid account",
49 ErrorCode::AccountNotWritable => "Error: Account is not writable",
50 }
51 }
52}