pyth_price_store/accounts/
errors.rs1use thiserror::Error;
2
3#[derive(Debug, Error)]
4pub enum ReadAccountError {
5 #[error("data too short")]
6 DataTooShort,
7 #[error("format mismatch")]
8 FormatMismatch,
9 #[error("already initialized")]
10 AlreadyInitialized,
11 #[error("invalid num prices")]
12 InvalidNumPrices,
13}
14
15#[derive(Debug, Error)]
16#[error("publisher price data overflow")]
17pub struct PublisherPriceError;
18
19#[derive(Debug, Error)]
20pub enum ExtendError {
21 #[error("not enough space")]
22 NotEnoughSpace,
23 #[error("invalid length")]
24 InvalidLength,
25}
26
27#[cfg(feature = "solana-program")]
28mod convert {
29 use {
30 super::*,
31 solana_program::program_error::ProgramError,
32 };
33
34 impl From<ReadAccountError> for ProgramError {
35 fn from(value: ReadAccountError) -> Self {
36 match value {
37 ReadAccountError::DataTooShort => ProgramError::AccountDataTooSmall,
38 ReadAccountError::FormatMismatch => ProgramError::InvalidAccountData,
39 ReadAccountError::AlreadyInitialized => ProgramError::AccountAlreadyInitialized,
40 ReadAccountError::InvalidNumPrices => ProgramError::InvalidAccountData,
41 }
42 }
43 }
44
45 impl From<PublisherPriceError> for ProgramError {
46 fn from(_value: PublisherPriceError) -> Self {
47 ProgramError::AccountDataTooSmall
48 }
49 }
50
51 impl From<ExtendError> for ProgramError {
52 fn from(value: ExtendError) -> Self {
53 match value {
54 ExtendError::NotEnoughSpace => ProgramError::AccountDataTooSmall,
55 ExtendError::InvalidLength => ProgramError::InvalidInstructionData,
56 }
57 }
58 }
59}